jQuery函数不适用于两个元素

时间:2011-10-07 21:21:09

标签: javascript jquery setinterval

我的jQuery脚本不会按升序返回数字。

的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);
});

我的HTML:

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

谢谢!

3 个答案:

答案 0 :(得分:2)

您在vari = 0之前错过了interval关键字。这会导致函数$.xpto的所有实例共享这些变量。此外,每次调用i时,$.xpto变量都会重置为零。

根据你的功能逻辑,这应该发生:

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

如果这不符合预期,请提及您的意愿,我会看一下。

答案 1 :(得分:1)

试试这个: - 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);
});

如果没有var关键字,变量i不会在闭包中明确声明,并且在$.xpto

的两个调用中都被重用

答案 2 :(得分:0)

如果您尝试为每一行提供自己的计数变量,那么在定义i之前必须使用var关键字。

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