jQuery 函数不适用于两个元素

发布于 2024-12-09 01:06:53 字数 529 浏览 0 评论 0原文

我的 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>

谢谢!

My jQuery script don't return the number in ascending order.

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

And my HTML:

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

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

╭ゆ眷念 2024-12-16 01:06:53

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

根据你的函数的逻辑,这应该发生:

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

如果这不符合预期,请提及你的愿望,我会看看它。

You're missing the var keyword before i = 0 and interval. This causes all instances of function $.xpto to share these variables. Furthermore, the i variable resets to zero each time you call $.xpto.

According to your function's logic, this should happen:

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

If this is not as expected, mention your wishes, and I will have a look at it.

寄风 2024-12-16 01:06:53

试试这个: - 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 的调用中被重用

Try this: - 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);
});

Without the var keyword, the variable i is not getting declared explicitly within the closure and is being reused within both the calls to $.xpto

枫林﹌晚霞¤ 2024-12-16 01:06:53

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

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

If you are trying to give each row its own count variable then you must use the var keyword before defining i.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文