【发布时间】:2014-11-04 01:10:33
【问题描述】:
我认为我在这里犯了一个愚蠢的错误,但我没有看到。我正在尝试获取
我的标记片段:
<ul>
<li id="thing1"></li>
<li id="thing2"></li>
<li id="thing3"></li>
</ul>
我的 Javascript 代码片段:
$("ul li").each(function(){
button = $(this).attr("id");
setInterval(function(){console.log(button);}, 500);
});
我希望/期望控制台输出是什么:
thing1
thing2
thing3
(repeating 500ms)
但我实际得到的是:
thing1
thing1
thing1
(repeating 500ms)
我在这里做错了什么?是作用域吗?
【问题讨论】:
-
经典问题当您忽略使用
var时,您会遇到意想不到的情况。全局变量会随着时间间隔的过去而改变 -
不知道为什么我的问题被否决了?无效吗?
-
考虑使用jshint.com 之类的工具来帮助您查找常见的编码错误。
-
并使用
this.id而不是$(this).attr("id")。那里不需要 jQuery。
标签: javascript jquery variables scope setinterval