84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
我给webSkill里面加了SPAN标签 我想执行的时候 标签的数字不断增加,可是为什么只是最后一个webSkill里面的SPAN在变化呢这是布局,在ID为dun1下面的p里面加的span效果显示为只有这个p下的span才在变化,我想所有SPAN都一起变化
学习是最好的投资!
循环里的事件方法,比如:click,mouseover一类的方法。循环里的setTimeout,setInterval。上述都是异步执行,也就是说当异步里的回调函数要执行时,for循环早就结束了,这时回调函数里的变量顺着作用域链开始往上找,却发现只能取循环完了最后的值。
怎么解决呢?闭包。sf上闭包那么多,建议楼主去看看。
是setInterval这个函数的问题吧,实质上还是闭包的问题。
for循环里写个闭包解决这个问题
for(var i = 0 ; i < obj.length ; i++){ (function(i){ ... })(i); }
JS是单线程,setInterval会在for循环完成后再执行,这时的oSpan是最后一个,所以也只有最后一个会变化。一个参考的解决框架:
for (var i = 0; i < objs.length, i++) { obj = objs[i]; (function(obj2){ setInterval(function(){ //obj2 这时每个函数都在本地保留了一份创建时对应的对象,执行时就是对着对象执行了 },10); })(obj); }
不太明白你的需求。“标签的数字不断增加”不断是什么意思?按照多少时间增加一次。你这里也没time的操作啊。。。还有是自动的添加的span里面数字不断增加嘛?
循环里的事件方法,比如:click,mouseover一类的方法。
循环里的setTimeout,setInterval。
上述都是异步执行,也就是说当异步里的回调函数要执行时,for循环早就结束了,这时回调函数里的变量顺着作用域链开始往上找,却发现只能取循环完了最后的值。
怎么解决呢?闭包。sf上闭包那么多,建议楼主去看看。
是setInterval这个函数的问题吧,实质上还是闭包的问题。
for循环里写个闭包解决这个问题
JS是单线程,setInterval会在for循环完成后再执行,这时的oSpan是最后一个,所以也只有最后一个会变化。
一个参考的解决框架:
不太明白你的需求。“标签的数字不断增加”不断是什么意思?按照多少时间增加一次。你这里也没time的操作啊。。。还有是自动的添加的span里面数字不断增加嘛?