Javascript 在循环中传递参数onclick
我正在循环中创建输入元素。 单击时,这些按钮应根据按钮元素的初始创建,使用特定参数调用特定函数。 事实上,所有按钮总是使用最后一个按钮的参数调用函数Javascript 在循环中传递参数onclick,javascript,loops,Javascript,Loops,我正在循环中创建输入元素。 单击时,这些按钮应根据按钮元素的初始创建,使用特定参数调用特定函数。 事实上,所有按钮总是使用最后一个按钮的参数调用函数 for (var i = 0; i < planets.length; i++){ var id = planets[i].id; var input = document.createElement("input"); input.type = "button"; input.className = "worldButto
for (var i = 0; i < planets.length; i++){
var id = planets[i].id;
var input = document.createElement("input");
input.type = "button";
input.className = "worldButton";
input.value = "Choose this world";
Input.onclick = function(){
game.pickWorld(planets, id);
}
}
for(var i=0;i
每个按钮似乎总是传递行星id[行星.长度],而不是行星[i]
。
console.log(id)
正确。
使用onclick
、addEventListener
或jquery都无所谓。单击
然而,整个行星阵列被成功地传递了
如何获得输入以正确传递特定迭代的id?您需要使用
for (var i = 0; i < planets.length; i++){
var id = planets[i].id;
var input = document.createElement("input");
input.type = "button";
input.className = "worldButton";
input.value = "Choose this world";
input.onclick = (function(id, planets){
return function(){
game.pickWorld(planets, id);
}
})(id,planets);
}
for(var i=0;i
所发生的是变量planets
和id
对回调函数可见,并且在执行时使用了最后一个迭代值
但是,通过闭包,您有效地创建了一个“私有”变量,由每个回调函数查看和保存。您需要在函数中传递
id
和变量,如:
for (var i = 0; i < planets.length; i++){
var id = planets[i].id;
var input = document.createElement("input");
input.type = "button";
input.className = "worldButton";
input.value = "Choose this world";
Input.onclick = (function(pl, id){
game.pickWorld(pl, id);
})(planets, id);
}
for(var i=0;i
你可以在这本书里读到更多关于生活的内容