Javascript jQuery函数don';我不能使用两种元素

Javascript jQuery函数don';我不能使用两种元素,javascript,jquery,setinterval,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',

我的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);
});
$(文档).ready(函数(){
$.xpto=函数(dom、速度){
i=0;
间隔=设置间隔(函数(){
i++;
$(dom).append(i+'
'); },速度); }; $.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>


谢谢

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

根据函数的逻辑,应该发生以下情况:

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

如果这不是预期的,请说明您的愿望,我会查看一下。

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

根据函数的逻辑,应该发生以下情况:

a 1
b 2
a 3
a 4
a 5
b 6
a 7
a 8
b 9
...
如果这不是预期的,请说出您的愿望,我会看一看。

试试这个:-

$(文档).ready(函数(){
$.xpto=函数(dom、速度){
var i=0;
间隔=设置间隔(函数(){
i++;
$(dom).append(i+'
'); },速度); }; $.xpto('a',1000); $.xpto('b',2000年); });
如果没有
var
关键字,变量i不会在闭包中显式声明,而是在对
$的两个调用中重复使用。xpto
请尝试以下操作:-

$(文档).ready(函数(){
$.xpto=函数(dom、速度){
var i=0;
间隔=设置间隔(函数(){
i++;
$(dom).append(i+'
'); },速度); }; $.xpto('a',1000); $.xpto('b',2000年); });

如果没有
var
关键字,变量i不会在闭包中显式声明,而是在调用
$.xpto

的过程中被重用。如果您试图为每一行指定自己的count变量,那么在定义i之前必须使用var关键字


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


你到底想做什么?你到底想做什么?