Variabele in functie in JavaScript

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Harry Hartman

Harry Hartman

27/11/2010 20:20:35
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<script type="text/javascript">
for (var i = 1; i <= 1000; i+=20)
{
    setTimeout("showData(i, 1000)", 3000);
}
</script>


Deze 'for loop' loopt niet en blijft hangen op de variabele i...
Klopt het niet?
Gewijzigd op 27/11/2010 20:22:02 door Harry Hartman
 
PHP hulp

PHP hulp

22/12/2024 20:29:24
 
- SanThe -

- SanThe -

27/11/2010 20:48:18
 
Harry Hartman

Harry Hartman

27/11/2010 20:54:21
Quote Anchor link
- SanThe - op 27/11/2010 20:48:18:


Aangezien daar geen passende oplossing of tip wordt geschreven, waarschijnlijk niet begrepen door de titel of zo...???
Gewijzigd op 27/11/2010 21:28:01 door Harry Hartman
 
Lauren Zonneveld

Lauren Zonneveld

28/11/2010 12:16:25
Quote Anchor link
Eenvoudig te testen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<script type="text/javascript">
for (var i = 1; i <= 1000; i+=20)
{
    document.write(i+"<br>");
}
</script>

Ik denk dat het probleem in je functie zit, of dat je "i" op 0 moet zetten.
 
Harry Hartman

Harry Hartman

29/11/2010 16:06:35
Quote Anchor link
OK, dank je wel.
De oplossing heb ik gevonden door stug door te googlen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
setTimeout("showData(i, 1000)", 3000);


moet worden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
setTimeout(function(){showData(i, 1000);}, 3000);
 
Chris -

Chris -

29/11/2010 16:52:20
Quote Anchor link
De i is een variabele, en die moet je dus buiten de quotes houden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
setTimeout("showData("+i+", 1000);", 3000);
zal dus ook werken :-)
 
Harry Hartman

Harry Hartman

29/11/2010 19:43:45
Quote Anchor link
Chris Horeweg op 29/11/2010 16:52:20:
De i is een variabele, en die moet je dus buiten de quotes houden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
setTimeout("showData("+i+", 1000);", 3000);
zal dus ook werken :-)


Oh, is dat het... nou, weer wat geleerd! Bedankt voor de tip!
 
Jelmer -

Jelmer -

29/11/2010 20:47:27
Quote Anchor link
Je eigen oplossing was mooier. Nu maak je binnen je code weer een string die javascript dan weer moet uit elkaar pluizen en compileren tot code voordat het die uit kan voeren.

Idioot extreem voorbeeld van de kracht van closures (kort door de bocht: variabelen uit de bovenliggende functies kunnen gebruiken in je functie)
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
function leeftijd(x) {
    return function(jaar) {
        return x.geboortejaar - jaar.
    }
}

var jelmer = {
    naam: 'jelmer',
    geboortejaar: 1920
}

var leeftijdOp = leeftijd(jelmer);

print(leeftijdOp(2010));

jelmer.geboortejaar = 1960;

print(leeftijdOp(2010)); // en tada, gewoon aangepast op basis van m'n andere geboortejaar.


En een parktisch voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
var teller = document.getElementById('teller);
var i = 0;

setInterval(function() {
    teller.innerHTML = ++i;
}, 1000);

// en nu kan je gewoon ergens verderop in je script
teller = document.getElementById('andere-teller');
// en dan gaat hij daarin verder met tellen.
 
Harry Hartman

Harry Hartman

30/11/2010 11:15:53
Quote Anchor link
OK, bedankt voor deze duidelijke uitleg met codes Jelmer... Top!
 



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.