我以动态方式上单击事件创建按钮的方式如下:在一个循环中添加事件侦听器与参数
//add button
for(i=1;i<=narrow+1;i++){
var btn = document.createElement("BUTTON");
btn.id="element"+i;
var t = document.createTextNode("3D View");
btn.appendChild(t);
btn.style.position="absolute";
btn.style.top="520px";
btn.style.left=100+120*(i-1)+"px";
btn.addEventListener('click', function(){window.alert(i-1+" "+nmol[i-1]);});
创建的按钮都不错,但在的addEventListener事件的函数的参数似乎没有完全可以增加。当我打印我留下价值1.
任何人都可以解释我为什么?
感谢
另见http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example –
https://developer.mozilla.org/en -US/docs/Web/JavaScript/Guide/Closures#Creating_closures_in_loops.3A_A_common_mistake –