Variabelen ophogen.. Wat doe ik verkeerd?

Status
Niet open voor verdere reacties.

Batchbrian

Gebruiker
Lid geworden
15 jan 2013
Berichten
10
[js]
function array_click()
{
var nummer = 1
if(nummer < 10)
{
alert('de waarde is' +nummer)
nummer++
setTimeout(array_click())
}
else
{
alert('Het optellen is voltooid, de waarde is' +nummer)
}

}
[/js]
Wat doe ik verkeerd?
 
Laatst bewerkt door een moderator:
Beste Batchbrian,

Ik heb niet veel verstand van Js, maar misschien moet je achter "var nummer = 1" een ";" zetten.

Mvg,

Webdesigner4

Kwam erachter dat dat ook niet werkt.............
 
Laatst bewerkt door een moderator:
Behalve dat er wat puntkomma's ontbreken, gaat het je waarschijnlijk om de fout in de logica:
je begint bij nummer=1, vervolgens kijk je of deze kleiner dan 10 is. Zo ja, dan geef je een alert, verhoog je nummer naar 2 en roep je dezelfde functie weer aan.
Daar zet je nummer weer op 1 en alles begint op nieuw. Nummer zal dus nooit groter dan 2 worden, en in je alert nooit groter dan 1..
 
Zoals ReneDirks al zei, gaat er inderdaad wat fout met je scope.

Daarnaast, je setTimeout klopt niet, want wat je doet is direct je functie aanroepen in plaats van een referentie naar de functie. En er moet een hoeveelheid miliseconde achter. Dit is beter:

[js]var nummer = 1;

function array_click()
{
if(nummer < 10)
{
alert('de waarde is' + nummer);
nummer++;

setTimeout( array_click, 1000 ); // 1000 ms = 1 seconde
}else{
alert('Het optellen is voltooid, de waarde is' + nummer);
}
}[/js]

daarnaast, een setTimeout is niet bedoelt voor voor loops. Als je direct wilt loopen, kan je beter geen recursie gebruiken, maar gewoon een for:

[js]function array_click()
{
var i, max = 10;

for( i = 1; i <= max; i++ )
{
alert( 'de waarde is ' + i );
}

alert('Het optellen is voltooid, de waarde is ' + i);
}[/js]
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan