Parameter of addEventListner
Parameter of addEventListner
我有这个小提琴:http://jsfiddle.net/yub2B/4/
.HTML:
<input type="text" />
<input type="text" />
<input type="text" />
<input type="text" />
.JS:
function test(x)
{
alert(x);
}
var text=document.getElementsByTagName("input");
for(var i=0,l=text.length;i<l;i++)
{
text[i].addEventListener("keydown",function()
{
test(i);
},false);
}
而不是为第一个文本框输出 0,为第二个文本框输出 1 ...它总是输出 4.
我该如何解决这个问题?
在循环内分配事件时,这是臭名昭著的循环问题。您在每次迭代中传递相同的 i
值,请使用以下命令:
for(var i=0,l=text.length;i<l;i++)
{
(function(i){
text[i].addEventListener("keydown",function()
{
test(i);
},false);
})(i)
}
更新的小提琴
相关文章:
- HighChart : Usage of setData
- Difference between methods of defining JavaScript 'class
- 为什么我在下面的..of循环中得到意外令牌
- Appending the innerhtml of <th>
- Animation cuts off multiple lines of text in <p>
- javascript: functionname() instread of functionname()
- jQuery使用.of()删除事件处理程序时出现的问题
- Three.js issue creating meshes outside of loader's load(
- jquery in the middle of html
- JavaScript equivalent of C#'s DynamicObject?
- nodejs console.log of object
- value of jquery sortable
- Javascript imageData returns array of 0's
- 对于grunt构建中的(let.of)错误
- Opposite of jQuery's :eq()
- Implementation of jQuery 'animate' with Meteor
- 当调用.of()然后调用.on()时,Jquery是否可能将事件推迟
- Angularjs ng-options selected value of dropdownlist
- Java eqivalent method of “splice(a,b,..)“在 JavaScript 方法中
- Parameter of addEventListner