当在我的表中创建新的行时,我试图插入一个onmouseover,但是它没有出现。我错过了什么愚蠢的东西吗?
var row = document.createElement("TR");
row.id = i;
row.onmouseover = hover(i);
var td1 = document.createElement("TD");
row.appendChild(td1);
tbody.appendChild(row);变量'i‘是循环中的当前数字。行的ID显示正常,但onmouseover显示不正常。
发布于 2011-10-26 20:49:20
使用匿名函数为i的值创建闭包,并确保将函数设置为onmouseover,而不是调用函数的结果:
var row = document.createElement("TR");
(function (i) {
row.onmouseover = function () { hover(i) };
})(row.id);
var td1 = document.createElement("TD");
row.appendChild(td1);
tbody.appendChild(row);
仔细查看您的代码,就会发现您实际上并没有设置TR元素的id属性。但是,您可能希望完全避免这种情况,并在悬停函数中使用this上下文:
var row = document.createElement("TR");
row.onmouseover = hover;
var td1 = document.createElement("TD");
row.appendChild(td1);
tbody.appendChild(row);function hover() {
alert(this.rowIndex); // <-- `this` refers to the row element
}https://stackoverflow.com/questions/7902768
复制相似问题