Javascript 如何在同一个循环中以Id作为循环元素的目标?

Javascript 如何在同一个循环中以Id作为循环元素的目标?,javascript,javascript-events,Javascript,Javascript Events,这就是我想做的: var numArray = ["One","Two","Three","For","Five","Six"]; for (i = 0, i < numArray.length; i++) { document.getElementById('results').innerHTML += <div id='listResult_"+[i]+"'></div><br>; var target = document.getE

这就是我想做的:

var numArray = ["One","Two","Three","For","Five","Six"];

for (i = 0, i < numArray.length; i++) {
   document.getElementById('results').innerHTML += <div id='listResult_"+[i]+"'></div><br>;

   var target = document.getElementById('listResult_'+[i]);
   document.addDomListener(target, 'mouseover', function() {
      alert("listResult_"+[i]);
   });
}
var numArray=[“一”、“二”、“三”、“五”、“六”];
对于(i=0,i;
var target=document.getElementById('listResult'+[i]);
addDomListener(目标'mouseover',函数(){
警报(“列表结果”+[i]);
});
}
它只对最后一个目标Id(listResult_5)发出警报。
如何将这六个元素分别作为目标?

每次您将任何内容分配给
innerHTML
时,您都会销毁其中的元素。由于您使用的是
+=
,因此您创建了新元素……但是您附加到它们的事件处理程序已经丢失。而是使用标准DOM方法创建和附加元素

此外,
i
是一个变量。它将是循环完成时分配的最后一个值

而是从上下文中获取数据

您的
for
循环语法也不正确

adddomstener
似乎是谷歌地图的一项功能。对HTML使用
addEventListener

var numArray = ["One","Two","Three","For","Five","Six"];

for (var i = 0; i < numArray.length; i++) {
   var myDiv = document.createElement('div');
   myDiv.id = "listResult_"+[i];
   myDiv.appendChild(document.createTextNode(myDiv.id));
   document.getElementById('results').appendChild(myDiv);
   // Don't append a line break between block containers. Use CSS isntead.
   myDiv.addEventListener('mouseover', function() {
      alert(this.id);
   });
}​
var numArray=[“一”、“二”、“三”、“五”、“六”];
对于(var i=0;i
每次您将任何内容分配给
innerHTML
时,您都会销毁其中的元素。由于您使用的是
+=
,因此您创建了新元素……但是您附加到它们的事件处理程序已经丢失。而是使用标准DOM方法创建和附加元素

此外,
i
是一个变量。它将是循环完成时分配的最后一个值

而是从上下文中获取数据

您的
for
循环语法也不正确

adddomstener
似乎是谷歌地图的一项功能。对HTML使用
addEventListener

var numArray = ["One","Two","Three","For","Five","Six"];

for (var i = 0; i < numArray.length; i++) {
   var myDiv = document.createElement('div');
   myDiv.id = "listResult_"+[i];
   myDiv.appendChild(document.createTextNode(myDiv.id));
   document.getElementById('results').appendChild(myDiv);
   // Don't append a line break between block containers. Use CSS isntead.
   myDiv.addEventListener('mouseover', function() {
      alert(this.id);
   });
}​
var numArray=[“一”、“二”、“三”、“五”、“六”];
对于(var i=0;i
试试:

for(i=0,i”;
var target=document.getElementById('listResult'+[i]);
(职能(e){
addDomListener(目标'mouseover',函数(){
警报(“列表结果”+[e]);
});
})(i) );
}
试试:

for(i=0,i”;
var target=document.getElementById('listResult'+[i]);
(职能(e){
addDomListener(目标'mouseover',函数(){
警报(“列表结果”+[e]);
});
})(i) );
}

我更关心函数定义;似乎需要在循环过程中捕获“i”的值。你确定它没有在整个阵列上循环?您似乎不太可能调试或将您写入控制台?我的观点是,正如所写的那样,
i
的值不会被捕获到函数定义中--当执行任何鼠标悬停函数时,
i
的值应该是6--实际上有点奇怪,它不是,但没有考虑太多。打字:“For”应该是“4”是的,它在整个数组中循环,并以“listResult_-Six”结尾,当我将鼠标悬停在它上面时,它会返回警报(“listResult_-Six”),但其他数组不会。有没有一种方法可以单独针对他们?我需要通过这个函数传递某种参数吗?也许是一个计时器来延迟它来捕捉每一个过程?我只是不知道如何捕捉每个循环过程…?很抱歉。我不得不更新我不确定为什么这不起作用(一旦关闭问题得到解决)。对于硬编码的div,它可以很好地工作,但是当动态添加它们时,有些东西很奇怪。将事件添加到一个添加的元素中是有一定作用的,但我不确定是什么。这里的JS比必要的要多,因为我试图找出我遗漏了什么;似乎需要在循环过程中捕获“i”的值。你确定它没有在整个阵列上循环?您似乎不太可能调试或将您写入控制台?我的观点是,正如所写的那样,
i
的值不会被捕获到函数定义中--当执行任何鼠标悬停函数时,
i
的值应该是6--实际上有点奇怪,它不是,但没有考虑太多。打字:“For”应该是“4”是的,它在整个数组中循环,并以“listResult_-Six”结尾,当我将鼠标悬停在它上面时,它会返回警报(“listResult_-Six”),但其他数组不会。有没有一种方法可以单独针对他们?我需要通过这个函数传递某种参数吗?也许是一个计时器来延迟它来捕捉每一个过程?我只是不知道如何捕捉每个循环过程…?很抱歉。我不得不更新我不确定为什么这不起作用(一旦关闭问题得到解决)。对于硬编码的div,它可以很好地工作,但是当动态添加它们时,有些东西很奇怪。将事件添加到一个添加的元素中是有一定作用的,但我不确定是什么。小提琴里的JS比必要的多,因为我想弄清楚