为什么表格里这样写的的事件委托没效果?
效果如下:

JS代码如下:
window.onload=function () {
var tab=document.getElementById('tab');
var oBnt=document.getElementById('btn');
var oUser=document.getElementById('user');
var oAge=document.getElementById('age');
var id=tab.tBodies[0].rows.length+1;
function mHover() {
for(var i=0;i
*用上面的方法是可以实现效果的,但在优化性能上不可取,如果用下面的方法却实现不了效果,这是为什么?哪位大神可以帮帮小白我!谢谢(>.<*)
PS:我在这里参考事件委托的:http://www.cnblogs.com/liugan...**
window.onload=function () {
var tab=document.getElementById('tab');
var oBnt=document.getElementById('btn');
var oUser=document.getElementById('user');
var oAge=document.getElementById('age');
var id=tab.tBodies[0].rows.length+1;
tab.tBodies[0].onmouseover=function (ev) {
var ev=ev||window.event;
var target=ev.target||ev.srcElement;
if(target.nodeName.toLowerCase()=='tr'){
target.style.backgroundColor='red';
}
};
tab.tBodies[0].onmouseout=function (ev) {
var ev=ev||window.event;
var target=ev.target||ev.srcElement;
if(target.nodeName.toLowerCase()=='tr'){
target.style.backgroundColor='#fff';
}
};
oBnt.onclick=function () {
var oTr=document.createElement('tr');
var oTd=document.createElement('td');
oTd.innerHTML=id++;
oTr.appendChild(oTd);
var oTd=document.createElement('td');
oTd.innerHTML=oUser.value;
oTr.appendChild(oTd);
var oTd=document.createElement('td');
oTd.innerHTML=oAge.value;
oTr.appendChild(oTd);
var oTd=document.createElement('td');
oTd.innerHTML='删除';
oTr.appendChild(oTd);
oTd.getElementsByTagName('a')[0].onclick=function () {
tab.tBodies[0].removeChild(this.parentNode.parentNode);
};
tab.tBodies[0].appendChild(oTr);
};
};
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
function mHover(){
改成target.parentNode.nodeName 指向tr
这个干嘛要重复写。。循环去哪里了。
楼主,直接写成 tab.onmouseover=function(ev),就可以了,不要去管body,同时判断的时候用td或者th,不要用tr