无法在新创建的元素上监听事件

Can't listen for event on newly created elements

我无法向新创建的元素添加事件。 以下代码在 onload 上执行。 它在页面刷新时显示警报“blah”,用于创建新元素的次数,但这些元素在加载后不可点击。 有什么想法吗?

for (var S = 0; S < arrInbound[i][3].length; S++){      
    var namesDiv = document.createElement('div');
    namesDiv.id = S;
    namesDiv.draggable = 'true';
    namesDiv.contenteditable = 'true';
    namesDiv.className = "crewNames";
    //namesDiv.ondragstart = 'dragStart(event)';
    //namesDiv.onblur = 'updateArr(this)';
    namesDiv.onclick = alert("blah");
    namesDiv.innerHTML = arrInbound[i][3][S];
    tagElRight.appendChild(namesDiv)        
}

这是函数赋值

namesDiv.onclick = function() { alert('a'); } // CORRECT

这是函数调用,namesDiv.onclickalert fnresult,也就是undefined

namesDiv.onclick = alert('a'); // WRONG

更简单的例子

    var myBar = alert('apple'); //calls alert instantly

    var myFoo = function() {
      alert('banana');
    }

    console.log('myBar', myBar); //logs undefined
    console.log('myFoo', myFoo); //logs fn

您的onclick 不是函数,因为您将onclick 设置为警报执行的结果。接下来试试:

namesDiv.onclick = function() {alert("blah")};