我想知道如何正确地将 onClick 之类的事件侦听器添加到动态 div。这是我的片段:
var $menu = new Array(2);
createDiv('yes');
function createDiv(title) {
var $class = 'menuLink';
var $title = 'title';
for(var i=0; i<$menu.length;i++)
{
$title = 'title';
var newdiv = document.createElement('div');
newdiv.setAttribute('class', $class);
newdiv.setAttribute('id', 'item'+i);
newdiv.addEventListener('onclick', clickHandle(newdiv.id),false);
if (title)
{
newdiv.innerHTML = $title;
} else {
newdiv.innerHTML = "No Title";
}
document.getElementById('menu').appendChild(newdiv);
showMenu();
}
}
function clickHandle(e)
{
if(e == 'item0')
{
alert('Link is' + ' ' + e);
}else{
alert('Another Link');
}
}
这是我的问题,该片段工作正常,它创建了我的 div,添加了 id 的值和所有内容,但是一旦附加事件,事件就会触发,所以当 for 循环创建 div 时,警报窗口会显示:链接是 item0 ,紧接着它说:另一个链接。
我误解了这个吗?(我在 AS3 中使用了这种方法无数次,得到了预期的结果,只是附加了一个等待点击的功能)。我想要的是我的 Div 等待用户点击它们,而不是在附加后立即触发。感谢您对此的任何提示。问候。
附言。IE 不支持 addEventListener,但我想在进入 IE 的疯狂之海之前解决这个问题,但我也会欣赏 IE 的方法。- 我尝试了“onclick”,然后在 addEventListener 行中“单击”,两者的结果都与上述相同。