无法在新创建的元素上监听事件
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.onclick
是alert fn的result,也就是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")};
我无法向新创建的元素添加事件。
以下代码在 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.onclick
是alert fn的result,也就是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")};