我有一个问题试图弄清楚为什么我动态添加的onclick事件无法执行任何操作。我已经搜索了许多站点,但是没有任何尝试。知道自己可能是某种愚蠢的错误,但我真的很想知道自己做错了什么。这是我的代码的一部分,包括相关功能:
function ChangeNumber(line){ //this is just a test function so far :)
document.getElementById('maincol').innerHTML += line + "<br/>"; //just adds "something to the end of a div"
}
function ChangeSize()
{
var rows, cols;
rows = document.getElementById('rows').value;
cols = document.getElementById('cols').value;
var tbody = document.getElementById('model');
tbody.innerHTML = "";
for (var i = 0; i < rows; i++){
var tr = document.createElement('tr');
for (var j = 0; j < cols; j++){
var td = document.createElement('td');
td.setAttribute('name', (i * cols) + (j + 1));
td.onclick = function() {ChangeNumber('something'); };
td.innerHTML = "0";
tr.appendChild(td);
}
tbody.appendChild(tr);
}
}
表的创建工作正常,从静态创建的onclick调用函数
ChangeNumber()
也是如此,但是当我单击动态创建的td时,什么也没有发生。有人可以向我澄清这个问题吗? 最佳答案
快速的JSFiddle显示basic approach is fine-至少在Chromium中。
tbody_x = document.getElementById('x');
tbody_x.innerHTML = '';
for (row = 0; row < 5; row++)
{
tr = document.createElement('tr');
for (col = 0; col < 10; col++)
{
td = document.createElement('td');
td.setAttribute('name', 'r' + row + 'c' + col);
td.onclick = function() { ChangeNumber('hi'); };
td.innerHTML = '0';
tr.appendChild(td);
}
tbody_x.appendChild(tr);
}
其他问题必须打破。 (尝试启动Firebug或类似工具,然后在控制台中查找JS错误。)