以下为另一方法: for(i=0;i<4;i++) { var button=document.createElement("button") var fn = addi(i); button.onclick=fn; button.value="按钮"+i document.body.appendChild(button) } function addi( i ) { var fn = function(){alert(i);}; return fn; }
I had answered this question before, there is another way: button.onclick=new Function("alert(" + i + ")");
var fn = function(){alert(event.srcElement.i)};
button.i = i;
button.onclick=fn;
button.onclick=function(){alert(i)}
这个能解释一下是什么意思吗?
{
var button=document.createElement("button")
button.onclick=(function(p){ return function(){ alert(p) }; })(i);
button.value="按钮"+i
document.body.appendChild(button)
}
不能只知其然,而不知其所以然
这涉及一个javascript的解释机制问题:相关内容是:lexical scope , closure
for(i=0;i<4;i++)
{
var button=document.createElement("button")
var fn = addi(i);
button.onclick=fn;
button.value="按钮"+i
document.body.appendChild(button)
}
function addi( i )
{
var fn = function(){alert(i);};
return fn;
}
{
var button=document.createElement("button")
button.onclick=new function("alert("+i+")")
button.value="按钮"+i
document.body.appendChild(button)
}
fason(咖啡人生)你的这个NEW的方法我试了一下,运行出错。说“缺少标识符”
你要注意大小写。那可不是fason写错了。
button.onclick=function(){alert(i)}和button.onclick=new Function("alert("+i+")")里的这两个function有什么不同?