JavaScript loop in php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Harry Hartman

Harry Hartman

22/11/2010 17:49:31
Quote Anchor link
Ik kom er even niet uit, verdorie...

Ik roep een JS functie aan met 2 variabelen.
In de functie vindt een AJAX handeling plaats.
Aan het einde moet een for lus komen tot de 2e variabele is bereikt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript">
function showData(str, TotaalAantal)
{
   // AJAX //

   for (var i = 20; i <= TotaalAantal; i+=20)
   {
    setTimeout("showData(i, TotaalAantal)", 3000);
   }
}
</script>


Dit werkt dus niet???
 
PHP hulp

PHP hulp

19/04/2024 02:41:37
 
Jaron T

Jaron T

22/11/2010 19:08:16
Quote Anchor link
Normaal doe je dat zo:

for (var i = 0; i <= TotaalAantal; i++)
{
}

maar waarom begin je met de waarde 20? en verhoog je met 20?
 
Jacco Engel

Jacco Engel

22/11/2010 19:08:25
Quote Anchor link
Vind een beetje een vaag verhaal.... kun je iets meer vertellen over wat je wil bereiken ben binnen welke context?
 
Synaps Framework

Synaps Framework

22/11/2010 19:15:47
Quote Anchor link
Ik denk dat je naar de functie setInterval moet kijken Harry.
 
Harry Hartman

Harry Hartman

22/11/2010 19:19:52
Quote Anchor link
Begin- en verhoog met 20 omdat deze waarde mee moet naar het script welke met AJAX wordt aangeroepen, series van 20...

Wat ik wil bereiken is als bovenstaand.

Dus: om het AJAX deel met for te loopen tot de TotaalAantal is bereikt... Het werkt dus niet en vraag mij af of het zo wel eens kan..??


Toevoeging op 22/11/2010 19:21:25:

Synaps Framework op 22/11/2010 19:15:47:
Ik denk dat je naar de functie setInterval moet kijken Harry.


Ga ik meteen doen, bedankt voor de tip!
 

22/11/2010 20:26:58
Quote Anchor link
Jaron T op 22/11/2010 19:08:16:
Normaal doe je dat zo:

for (var i = 0; i <= TotaalAantal; i++)
{
}

maar waarom begin je met de waarde 20? en verhoog je met 20?


Dat is niet normaal. Een for loop heeft de betekenis dat je drie expressies evalueert. De eerste wordt de eerste keer geëvalueerd, deze wordt altijd uitgevoerd, na een keer de for loop doorlopen hebben wordt de tweede expressie geëvalueerd om te kijken of de loop nog moet lopen, en de derde wordt altijd op het end van de loop uitgevoerd.
Je kunt er dus van alles mee doen. Beginnen op -100, kijken of de waarde gedeeld door twee 1 is en ophogen met 1. Dat is ook een normale loop. Of achterwaarts. Of... Of... Of...
 
Harry Hartman

Harry Hartman

23/11/2010 00:10:02
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
   for (var i = 20; i <= TotaalAantal; i+=20)
   {
    setTimeout("showData(i, TotaalAantal)", 3000);
   }


Is deze wijze van variabelen wel goed geschreven in JS?
 
Harry Hartman

Harry Hartman

25/11/2010 11:22:10
Quote Anchor link
Om het misschien duidelijker te maken, onderstaand de complete code.
De functie wordt aangeroepen en gaat zichzelf herhalen tot waarde TotaalAantal is bereikt.
Voor school worden er zo groepjes van 20 mails verstuurd naar anderen.
Maar... het wordt 1x uitgevoerd en blijft hangen bij/in de for loop, denk ik.
De verzendData div is om te zien waar we zijn...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<script type="text/javascript">

function showData(str, TotaalAantal)
{
if (str=="")
  {
  document.getElementById("verzendData").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("verzendData").innerHTML=document.getElementById("verzendData").innerHTML + xmlhttp.responseText;
     /* Auto Scroll Top */
    // document.getElementById("verzendData").scrollTop=0;  
        /* Auto Scroll Down */
        var objDiv = document.getElementById("verzendData");
    objDiv.scrollTop = objDiv.scrollHeight;
    }
  }
xmlhttp.open("GET","nbsmtp.php?q="+str,true);
xmlhttp.send();

for (var i = 21; i <= TotaalAantal; i+=20)
{
    setTimeout("showData(i, TotaalAantal)", 3000);
}

</script>

<script language = "JavaScript"> showData(1, 100) </script>;

<!--<div id="verzendData"></div>-->
<div id="content">
<p id="verzendData"> </p>
</div
Gewijzigd op 25/11/2010 11:50:24 door Harry Hartman
 
Harry Hartman

Harry Hartman

29/11/2010 16:11:08
Quote Anchor link
OK, oplossing gevonden door stug door te googlen:

Teneerste: een for loop in de functie die dezelfde fuctie aanroept zorgt voor een oneindige lus. :-( dom!

for vervangen door if en als volgt de functie aanroepen i.v.m. met de variabelen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if(str <= TotaalAantal)
{
   str+=20;
   setTimeout(function(){showData(str, TotaalAantal);}, 3000);
}
Gewijzigd op 29/11/2010 16:12:00 door Harry Hartman
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.