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

标签 javascript dom-events

我无法向新创建的元素添加事件。 以下代码在 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 fn结果,它是未定义

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

关于javascript - 无法监听新创建的元素上的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38811617/

相关文章:

javascript - 为什么我不能访问这个 JS 函数? undefined 不是函数?

javascript - 绑定(bind)点击失去了我的类(class)的上下文。 JS

javascript - 如何使用 ES6 在 javascript 中删除或添加项目到锯齿状数组?

javascript - JQM - 将图像动态添加到可折叠标题

javascript - PeerJS - connection.on ('open' )未执行

javascript - Webkit transitionEnd 事件分组

javascript - 如何在 DOM 上触发 js 创建的触摸事件

javascript - jQuery Mobile 表单验证 - 选择哪个插件?

javascript - 在Webview中从JS调用Titanium函数

javascript - 如何使用 jQuery 真正限制输入字段的可用字符?