【发布时间】:2017-03-28 02:48:22
【问题描述】:
我正在创建一个页面,我最终希望使用“.binary”类遍历每个元素。
每个元素都会在 200-1000 之间的随机 setInterval 时间更改其文本值。目前我有:
$(function () {
$(".binary").each(function (i , obj) {
setTimeout(function () {
if (obj.innerText == 0) {
obj.innerText = 1;
} else {
obj.innerText = 0;
}
}, 500);
});
});
当我运行此代码时,它似乎只运行一次然后停止。有没有办法可以不断地单独循环这些元素,以便元素在随机设定的时间单独改变?
感谢任何帮助或建议。提前谢谢你。
编辑;
function flipValue(index) {
setTimeout(function() {
var $binary = $('.binary');
$binary.eq(index % $binary.length).text(function(i, t) {
return t == '1' ? '0' : '1';
});
flipValue(++index);
}, Math.round(Math.random() * 800) + 200); // random between 200 - 1000
};
flipValue(0);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
<div class="binary">0</div>
<div class="binary">1</div>
【问题讨论】:
-
函数中的
this不是你认为的this -
在超时前复制obj或者创建一个闭包
-
请看编辑
-
$(".binary").each(function () { var that = this; setTimeout(function () { that.innerText = that.innerText==0?1:0; }, 500); });obj.innerText 也不适用于 jQuery 对象
标签: javascript jquery html loops setinterval