Mon script jQuery ne renvoie pas le nombre dans l'ordre croissant.

jQuery

$(document).ready(function() {
  $.xpto = function(dom, speed) {
    i = 0;
    interval = setInterval(function() {
      i++;
      $(dom).append(i + '<br>');
    }, speed);
  };

  $.xpto('#a', 1000);
  $.xpto('#b', 2000);
});

Et mon HTML:

<div id="a" style="background:blue;float:left;"></div>
<div id="b" style="background:red;float:left;"></div>

Merci!

0
Caio Tarifa 8 oct. 2011 à 01:21

3 réponses

Meilleure réponse

Vous manquez le mot clé var avant i = 0 et interval. Cela oblige toutes les instances de la fonction $.xpto à partager ces variables. De plus, la variable i est remise à zéro chaque fois que vous appelez $.xpto.

Selon la logique de votre fonction, cela devrait se produire:

a 1
b 2
a 3
a 4
a 5
b 6
a 7
a 8
b 9
...

Si ce n'est pas comme prévu, mentionnez vos souhaits et je vais y jeter un œil.

2
Rob W 7 oct. 2011 à 21:23

Essayez ceci: - http://jsfiddle.net/FloydPink/hWYG5/

$(document).ready(function() {
    $.xpto = function(dom, speed) {
        var i = 0;
        interval = setInterval(function() {
            i++;
            $(dom).append(i + '<br>');
        }, speed);
    };

    $.xpto('#a', 1000);
    $.xpto('#b', 2000);
});

Sans le mot clé var, la variable i n'est pas déclarée explicitement dans la fermeture et est réutilisée dans les deux appels à $.xpto

1
Hari Pachuveetil 7 oct. 2011 à 21:26

Si vous essayez de donner à chaque ligne sa propre variable de comptage, vous devez utiliser le mot clé var avant de définir i.

http://jsfiddle.net/pF2ef/2/

0
sissonb 7 oct. 2011 à 21:27
7692981