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);