metrhth

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
sam83
Δημοσιεύσεις: 8
Εγγραφή: 13 Μάιος 2005 15:03

metrhth

Δημοσίευση από sam83 » 13 Μάιος 2005 15:06

Geia,eimai kainourgios edw kai tha ithela na me voithisete an mporeite.
Thelw na ftiaksw enan metrhth se javascript.Ap’oti kserw trexei synexeia ston browser opote an sthn arxh tou programmatos tha dinw arxikes times se metavlhtes tote nai men mesa sto programma tha tis epeksergazetai opws thelw, alla meta pali tha tis arxikopoiei swsta?

Gia paradeigma exw grapseito parakatw programma

Κώδικας: Επιλογή όλων

<SCRIPT>
<!--
R1=tha thn dinw manual;
R2=tha thn dinw manual;
var R11=0;     //arxikopoihsh toy R11
var R22=0;     //arxikopoihsh toy R22
var R3=0;     //arxikopoihsh toy R3

	if &#40;R1<100&#41; 
		R11++;

	if &#40;R2<100&#41; 
		R22++;
	
if &#40;R11>R22&#41;
	R3++;		//to provlima moy einai edw!de mporei na parei timh megalyterh apo 1
if &#40;R11<R22&#41;
	R3--;		//antistoixa mexri -1

document.write&#40;R11&#41;;	
document.write&#40;R22&#41;;
document.write&#40;R3&#41;;

// -->
</SCRIPT>

Άβαταρ μέλους
softius
Script Master
Δημοσιεύσεις: 241
Εγγραφή: 11 Ιαν 2004 19:07
Επικοινωνία:

metrhth

Δημοσίευση από softius » 13 Μάιος 2005 15:33

sam83 έγραψε:Ap oti kserw trexei synexeia ston browser opote an sthn arxh tou programmatos tha dinw arxikes times se metavlhtes tote nai men mesa sto programma tha tis epeksergazetai opws thelw, alla meta pali tha tis arxikopoiei swsta?
Απλά μία μικρή διόρθωση! Ένα τμήμα javascript κώδικα δεν τρέχει συνέχεια στο browser. Το παράδειγμα που μας έχεις δώσει θα τρέξει μόνο μία φορά - όταν φορτωθεί η σελίδα - και δεν θα ξανατρέξει. Είναι λογικό δηλαδή που η μεταβλητή σου δεν παίρνει τιμή μεγαλύτερη της μονάδας.

Αν θες να κάνεις ένα κομμάτι κώδικα να τρέχει συνέχεια σε μία σελίδα, τότε μπορείς να χρησιμοποιήσεις εντολές επαναλήψεων π.χ. το while . Αν θες να τρέχει ανά ορισμένα χρονικά διαστήματα π.χ. κάθε 5 δεύτερα υπάρχουν ειδικές συναρτήσεις που κάνουν τη δουλειά ;)

Αποφάσισε τι ακριβώς θέλεις και μας λες ώστε να σε βοηθήσουμε.

Υ.Γ. αν επιτρέπεται... ποιος είναι ο σκοπός του script?

sam83
Δημοσιεύσεις: 8
Εγγραφή: 13 Μάιος 2005 15:03

metrhth

Δημοσίευση από sam83 » 13 Μάιος 2005 18:41

vasiak trexei synexeia to sygkekrimeno kommati.auto to diapistwnw apo thn ergasia pou kanw.
to ekana me to while alla o explorer kolaei k mou leei oti auto to script pou trexei mporei na kollhsei to mhxanhma klp klp k. me rwtaei an thelw na to synexisw h oxi.
vasika an mporousa na apothikevw se ena txt tha itan kalo.
dhladh ekei poy exw to provlima (R++ h R--) na paei kai na kanei ta antistoixa se ena aplo text.
kati tetoio ginetai?

ps.exei na kanei me ena kit pou exw kai trexei java.

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

metrhth

Δημοσίευση από skeftomilos » 14 Μάιος 2005 12:10

Χμ, κόβω πέντε δάχτυλα αν ο παραπάνω κώδικας τρέχει περισσότερες από μία φορά. Εκτός αν πατάς συνέχεια Refresh! Πάντως ειλικρινά δεν κατάλαβα τι ακριβώς μετράει το πρόγραμμα. Μήπως θέλεις να εμφανίσεις στην οθόνη έναν αριθμό που θα αυξάνεται αδιάκοπα μία φορά το δευτερόλεπτο? Αν ναι, δοκίμασε αυτό:

Κώδικας: Επιλογή όλων

<html>
  <head>
    <script type="text/javascript">
      window.onload = function&#40;&#41; &#123;
        increment&#40;&#41;
      &#125;
      var increment = function&#40;&#41; &#123;
        document.getElementById&#40;"number"&#41;.innerHTML++
        window.setTimeout&#40;increment, 1000&#41;
      &#125;
    </script>
  </head>
  <body>
    <div id="number">0</div>
  </body>
</html>
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
softius
Script Master
Δημοσιεύσεις: 241
Εγγραφή: 11 Ιαν 2004 19:07
Επικοινωνία:

metrhth

Δημοσίευση από softius » 14 Μάιος 2005 14:10

Μάλλον θα κάνει auto-refresh η σελίδα :D

sam83
Δημοσιεύσεις: 8
Εγγραφή: 13 Μάιος 2005 15:03

metrhth

Δημοσίευση από sam83 » 14 Μάιος 2005 20:34

oups!nai,kanei autorefresh :P
oxi,den thelw na auksanei kathe ena sec.
mporei autos o kwdikas poy mou dwses skefotmile na ginetai meta apo mia entolh if?

dhladh na mpei meta apo apo autes tis entoles

Κώδικας: Επιλογή όλων

if &#40;R11>R22&#41;
   R3++;    
if &#40;R11<R22&#41;
   R3--;     
egw tha kanw refresh kathe 5sec.mporei kathe 500msec na elegxei eswterika an yparxei allagh kai an nai na anevazei h na katevazei ton metrhth?

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

metrhth

Δημοσίευση από skeftomilos » 14 Μάιος 2005 22:35

Άλλαξε μόνο τη ρουτίνα increment():

Κώδικας: Επιλογή όλων

var increment = function&#40;&#41; &#123;
  if&#40;συνθήκη1&#41; &#123;
    document.getElementById&#40;"number"&#41;.innerHTML++
  &#125; else if&#40;συνθήκη2&#41; &#123;
    document.getElementById&#40;"number"&#41;.innerHTML--
  &#125;
  window.setTimeout&#40;increment, 500&#41;
&#125;
Τώρα η αύξηση ή η μείωση θα συμβαίνει μόνο αν είναι αληθής η "συνθήκη1" ή η "συνθήκη2". Η συνθήκη μπορεί να είναι η R11>R22, αλλά με ποιο τρόπο γίνεται η αλλαγή των τιμών των μεταβλητών R11 και R22? Με ενέργεια του χρήστη? Με άλλο timer? Αν προκαλέσεις ατέρμονα βρόγχο στο window.onload (κάτι τέτοιο υποψιάζομαι) τότε τα συμβάντα του timer δε θα βρουν το χρόνο να εκτελεστούν ποτέ, χώρια που θα γονατίσεις άνευ λόγου το μηχάνημα. Επιπλέον τι χρειάζεται το Auto-refresh? Έχε υπόψη ότι μετά από κάθε refresh ο μετρητής ξεκινάει από την αρχή. Εάν δεν προμηθεύσεις ένα τρόπο να περνάει τιμές το ένα Refresh στο άλλο, ο μετρητής σου δε θα μετράει τίποτα χρήσιμο. Το Auto-refresh είναι (κατά την ταπεινή μου γνώμη) ένδειξη ότι κάτι δεν πάει καλά γενικώς. Θα βοηθούσε να μας έλεγες τι θέλεις να πετύχεις με το script.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

sam83
Δημοσιεύσεις: 8
Εγγραφή: 13 Μάιος 2005 15:03

metrhth

Δημοσίευση από sam83 » 15 Μάιος 2005 02:08

Η συνθήκη μπορεί να είναι η R11>R22, αλλά με ποιο τρόπο γίνεται η αλλαγή των τιμών των μεταβλητών R11 και R22? Με ενέργεια του χρήστη? Με άλλο timer?
to R11 kai R22 tha pernei thn timh 1 apo tis times poy tha exoyn o R1 kai o R2.Dhladh, R1 kai R2 tha pernoun synexeia times.Opote apo thn sythiki

Κώδικας: Επιλογή όλων

  if &#40;R1<100&#41;
      R11++;

   if &#40;R2<100&#41;
      R22++; 
tha exoun times.Ara h synthiki R11>R22 tha einai alhtis kapoia stigmh. kata megaloxroniko diastima tha isxuei to R11=R22, elpizw na mhn yparxei provlima me auto!
Αν προκαλέσεις ατέρμονα βρόγχο στο window.onload (κάτι τέτοιο υποψιάζομαι) τότε τα συμβάντα του timer δε θα βρουν το χρόνο να εκτελεστούν ποτέ, χώρια που θα γονατίσεις άνευ λόγου το μηχάνημα
pws tha ginei kati tetoio?Se poia periptwsh?
Επιπλέον τι χρειάζεται το Auto-refresh?
gia na vlepw ta apotelesmata.
Έχε υπόψη ότι μετά από κάθε refresh ο μετρητής ξεκινάει από την αρχή. Εάν δεν προμηθεύσεις ένα τρόπο να περνάει τιμές το ένα Refresh στο άλλο, ο μετρητής σου δε θα μετράει τίποτα χρήσιμο.
an mporousa na epairna thn timh py exei kathe fora o metrhths ths istoselidas kai ton emfaniza se allh, tote den tha ypirxe provlima pistevw.ti les?
Na sai kal gia to endiaferon soy pantws :)

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

metrhth

Δημοσίευση από skeftomilos » 15 Μάιος 2005 18:40

Ατέρμονας βρόγχος μπορεί να συμβεί π.χ. έτσι:

Κώδικας: Επιλογή όλων

<script type="text/javascript">
  window.onload = function&#40;&#41; &#123;
    while&#40;true&#41; &#123;&#125;
  &#125;
</script>
... ή απλούστερα:

Κώδικας: Επιλογή όλων

<script type="text/javascript">
  while&#40;true&#41; &#123;&#125;
</script>
Θάνατος!
R1=tha thn dinw manual;
R2=tha thn dinw manual;
Αυτό είναι το λεπτό σημείο. Πώς θα δίνεις αυτές τις τιμές manually? Για τι είδους σελίδα μιλάμε, για απλή HTML ή για δυναμική (ASP, PHP) που τρέχει στο server?

Το AutoRefresh δε χρειάζεται για να βλέπεις αποτελέσματα, παρά μόνο άν έχεις κώδικα που τρέχει στο server. Αν όλος ο κώδικας είναι client-side, JavaScript δηλαδή, το AutoRefresh είναι περιττό, αν όχι επιζήμιο. Θα έλεγα να αφήσεις το Refresh και να δοκιμάσεις με timers, δηλαδή window.setTimout() ή window.setInterval() για να πετύχεις αυτό που θέλεις (το οποίο ακόμα δεν έχω καταλάβει τι είναι). Με το Refresh η σελίδα φορτώνεται εκ νέου, ο κώδικας ξεκινάει απ΄ την αρχή, όλοι οι υπολογισμοί που έχουν γίνει χάνονται. Είναι σα να βλέπεις διαδοχικά δύο διαφορετικές σελίδες, που η μιά δεν ξέρει για την ύπαρξη της άλλης.

Μήπως θέλεις τον μετρητή να μετράει τον αριθμό των επισκεπτών της σελίδας σου? Αυτό δε γίνεται με JavaScript. Θέλεις server-side κώδικα.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

sam83
Δημοσιεύσεις: 8
Εγγραφή: 13 Μάιος 2005 15:03

metrhth

Δημοσίευση από sam83 » 15 Μάιος 2005 22:22

wraia, opote atermonos vroxos den petyxainetai!

h selida einai aplh html.oi times pou tha phgainoyn ston R1 kai R2 tha stelnontai mesa apo to kit me rithmo <1sec. einai periergh kai dyskolh h katanohsh toy gia na mpw se perissoteres leptomereies!
Θα έλεγα να αφήσεις το Refresh και να δοκιμάσεις με timers, δηλαδή window.setTimout() ή window.setInterval() για να πετύχεις αυτό που θέλεις
entaksei, symfwnw na afhsw to autorefresh.Alla pws tha petyxw na vlepw thn timh pou exei o R3?pws tha mevoithisoun autes oi entoles pou mou dwses?den exw ksanadoulepsei me autes!

sto paradeigma poy mou xeis dwsei to R3 einai to number?

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

metrhth

Δημοσίευση από skeftomilos » 15 Μάιος 2005 23:15

Όμως μιλώντας για το σκοπό του μετρητή είναι πιθανό να ξεμπεδέψεις και ο ίδιος την κατάσταση μέσα στο μυαλό σου. Δεν αμφιβάλλω ότι είναι περίπλοκη η περίπτωση. Λες τώρα ότι οι R1 και R2 θα στέλνονται μέσα από το Κιτ. Ποιο Κιτ? Πρώτη φορά ακούω ότι υπάρχει κάτι που λέγεται "Κιτ" και στέλνει μεταβλητές!
:)
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

sam83
Δημοσιεύσεις: 8
Εγγραφή: 13 Μάιος 2005 15:03

metrhth

Δημοσίευση από sam83 » 16 Μάιος 2005 12:47

opws eipe kai pio prin, exw sthn katoxh moy ena kit to opoio exei esnwmatwmeno web server kai mporei na exei panw selides htm, ara kai enswmatwmeno kwdika java/javasxript/applet! mesa apo orismenes proypotheseiw mporei kai stelnei ta apotelesmata kapoiwn pragmatwn ston R1,R2,Rn poy tis leme metavlhtes!

Tsp, tha mporeseis na synexiseis na me voithiseis?

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

metrhth

Δημοσίευση από skeftomilos » 16 Μάιος 2005 20:08

Έχω πραγματικά πολύ μεγάλη διάθεση να σε βοηθήσω, αλλά πρέπει να με βοηθήσεις κι εσύ να καταλάβω πώς έχει η κατάσταση.

- Έχεις λοιπόν ένα Java applet που με κάποιο τρόπο καταφέρνει και βρίσκεται σε συνεχή επικοινωνία με το server.
- Το applet έχει επιπλέον την ικανότητα να αλλάζει συνεχώς τις τιμές δύο JavaScript μεταβλητών της σελίδας (R1 και R2).
- Θέλεις να προσθέσεις κώδικα JavaScript που να τρέχει ανά τακτά διαστήματα και να εμφανίζει τις τρέχουσες τιμές των R1 και R2 σε κάποιο άλλο μέρος της οθόνης.

Σωστά μέχρι εδώ? Ok, ξέρω ότι είναι πιο περίπλοκοι οι υπολογισμοί, αλλά ας καταφέρουμε πρώτα αυτό το απλό. Τα υπόλοιπα θα είναι εύκολο να τα συμπληρώσεις μόνος σου. Λοιπόν, απάντηση:

- Ξεχνάς το auto-refresh.
- Βάζεις ένα div ή span στο body της σελίδας όπου θα εμφανίζονται οι τιμές των μεταβλητών.
- Παγιδεύεις το συμβάν onload της σελίδας.
- Ξεκινάς εκεί έναν timer που ανά τακτά διαστήματα να καλεί μία ρουτίνα.
- Στη ρουτίνα αυτή διαβάζεις τις R1 και R2, και τις εμφανίζεις στο div ή span.

Π.χ.

Κώδικας: Επιλογή όλων

<html>
  <head>
    <script type="text/javascript">
      var R1 = 0
      var R2 = 0
      window.onload = function&#40;&#41; &#123;
        window.setInterval&#40;check, 500&#41;
      &#125;
      function check&#40;&#41; &#123;
        document.getElementById&#40;"results"&#41;.innerHTML = String&#40;R1&#41; + " " + String&#40;R2&#41;
        R1++
      &#125;
    </script>
  </head>
  <body>
    <div id="results"></div>
  </body>
</html>
Την εντολή R1++ την προσέθεσα για να ζωντανέψω το παράδειγμα. Μόλις προσθέσεις το applet πρέπει να τη βγάλεις.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

sam83
Δημοσιεύσεις: 8
Εγγραφή: 13 Μάιος 2005 15:03

metrhth

Δημοσίευση από sam83 » 16 Μάιος 2005 23:35

skeftomilos έγραψε:Έχω πραγματικά πολύ μεγάλη διάθεση να σε βοηθήσω, αλλά πρέπει να με βοηθήσεις κι εσύ να καταλάβω πώς έχει η κατάσταση.

- Έχεις λοιπόν ένα Java applet που με κάποιο τρόπο καταφέρνει και βρίσκεται σε συνεχή επικοινωνία με το server.
exw mia aplh selida htm
- Το applet έχει επιπλέον την ικανότητα να αλλάζει συνεχώς τις τιμές δύο JavaScript μεταβλητών της σελίδας (R1 και R2).
oi times proerxontai/ananeonontai apo ton server!
- Θέλεις να προσθέσεις κώδικα JavaScript που να τρέχει ανά τακτά διαστήματα και να εμφανίζει τις τρέχουσες τιμές των R1 και R2 σε κάποιο άλλο μέρος της οθόνης.
vasika thelw na emfinizei to apotelesma ths R3.otan to R1 ginei 1 tote auksanei thn R3.An to R2 ginei 1 tote tha meiwnei thn R3!
- Ξεχνάς το auto-refresh.
symfwnw

- Στη ρουτίνα αυτή διαβάζεις τις R1 και R2, και τις εμφανίζεις στο div ή span.
opoies times mpoun sto div h span, tha mporw na tis vlepw ston browser,etsi?

mallon prepei na sto deiksw live me to ti exw na kanw :)

sam83
Δημοσιεύσεις: 8
Εγγραφή: 13 Μάιος 2005 15:03

metrhth

Δημοσίευση από sam83 » 24 Μάιος 2005 16:08

arxika thelw na euxaristhsw ton skeftomilo, pou diethese ton polytimo xrono toy gia na me voithisei arketa sto vasiko meros tou provlimatos moy.Dhladh thn dhmioyrgia script poy na pernei 2 times apo mia kai na tis emfanizei se mia allh selida me autorefresh!

to allo meros tou provlimatos moy einai h dhmiourgia metrhth.pws tha thn petyxw?
thelw,elexontas dyo metavlhtes, na auksanetai h na meiwnetai enas metrhths.

kati san kai auto pou eixa dwsei sthn arxh:

Κώδικας: Επιλογή όλων

if &#40;R11>R22&#41;
   R3++;   
if &#40;R11<R22&#41;
   R3--;     
yparxei kapoios tropos?

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες