Javascript 动态创建的按钮,需要将不同的值传递给foreach循环中的onlick函数 我在做什么:
我在一个数组Javascript 动态创建的按钮,需要将不同的值传递给foreach循环中的onlick函数 我在做什么:,javascript,html,foreach,onclick,Javascript,Html,Foreach,Onclick,我在一个数组jsarray中循环,并创建一个按钮作为删除按钮(为数组中的每个元素创建一个按钮)。我在每个循环中递增一个变量I,它将是该按钮数组的索引值。例如,在循环中创建的第二个按钮应将值2传递到其onclick函数参数中,依此类推 守则的背景资料: jsarray包含Tweets的id,稍后将嵌入到我的网页中。tweets被嵌入到forEach循环中,我想在同一个循环中创建按钮 按钮的onclick调用一个函数deleteTeet(),该函数接受jsarray的索引,以便下一个要嵌入的循环中不
jsarray
中循环,并创建一个按钮作为删除按钮(为数组中的每个元素创建一个按钮)。我在每个循环中递增一个变量I
,它将是该按钮数组的索引值。例如,在循环中创建的第二个按钮应将值2
传递到其onclick
函数参数中,依此类推
守则的背景资料:
jsarray
包含Tweets的id,稍后将嵌入到我的网页中。tweets被嵌入到forEach循环中,我想在同一个循环中创建按钮
按钮的onclick
调用一个函数deleteTeet(),该函数接受jsarray
的索引,以便下一个要嵌入的循环中不会包含已删除的tweet
这是我的deleteTweet()
函数:
以下是嵌入推文并创建删除按钮的功能:
我的问题是:
对于在该循环中创建的所有按钮,它们在单击操作时都会将索引50传递给deleteTweets
函数。我知道这是因为定义通过了I
,完成后等于50
如何在当前循环中为每个按钮指定参数值I
。与中一样,按钮:“DELETE TWEET9”实际上将值9传递给deleteTweet()
,而不是始终传递数组中的最后一项
简化:
array=['1','2','3','4']
var i = 0;
docFrag = document.createDocumentFragment();
array.forEach(function(id)
{
var delButton = document.createElement('button');
docFrag.appendChild(delButton);
delButton.innerHTML = "DELETE TWEET" + i
//This is the problem area:
delButton.onlick = function(){
deleteTweet(i);
}
i++;
});
document.body.appendChild(docFrag);
重申一下,我在这个循环中创建的所有按钮都执行
deleteTweet(*max of array*)
我希望它是循环时I
的值我相信这是由于一个问题。您不需要创建自己的索引器(即VARI)。您可以将第二个变量传递给forEach,该变量将在每次迭代时作为数组的索引(请参阅)。请尝试以下方法:
array = ['1', '2', '3', '4']
docFrag = document.createDocumentFragment();
array.forEach(function(id, i)
{
var delButton = document.createElement('button');
docFrag.appendChild(delButton);
delButton.innerHTML = "DELETE TWEET" + i
//This is the problem area:
delButton.onlick = function(){
deleteTweet(i);
}
});
document.body.appendChild(docFrag);
这给了我一个synstax错误:“uncaughtsyntaxerror:missing)after参数列表”
var i = 0;
docFrag = document.createDocumentFragment();
array.forEach(function(id)
{
var delButton = document.createElement('button');
docFrag.appendChild(delButton);
delButton.innerHTML = "DELETE TWEET" + i
//This is the problem area:
delButton.onlick = function(){
deleteTweet(i);
}
i++;
});
document.body.appendChild(docFrag);
array = ['1', '2', '3', '4']
docFrag = document.createDocumentFragment();
array.forEach(function(id, i)
{
var delButton = document.createElement('button');
docFrag.appendChild(delButton);
delButton.innerHTML = "DELETE TWEET" + i
//This is the problem area:
delButton.onlick = function(){
deleteTweet(i);
}
});
document.body.appendChild(docFrag);