小菜鸟飞
2016-08-10 15:59
window.onload=function(){
var tr = document.getElementsByTagName("tr");
for(var i=0;i<tr.length;i++){
colorchange(tr[i]);
}
function colorchange(obj){
obj.onmouseover=function(){
obj.style.backgroundColor="#f2f2f2";
}
obj.onmouseout=function(){
obj.style.backgroundColor="#fff";
}
}
}
// 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;
function add(){
var objnode = document.getElementById("table");
var newnode= document.createElement("tr");
var newnode1=document.createElement("td");
newnode1.innerHTML="xh003";
var newnode2=document.createElement("td");
newnode2.innerHTML="李晓红";
var newnode3=document.createElement("td");
newnode3.innerHTML="<a href='javascript:;' onclick='del(this)' >删除</a>";
objnode.appendChild(newnode);
newnode.appendChild(newnode1);
newnode.appendChild(newnode2);
newnode.appendChild(newnode3);
var tr = document.getElementsByTagName("tr");
for(var i=0;i<tr.length;i++)
{
colorchange(tr[i]);
}
}
每次删除跟增加行数之后,表格的行数都会发生变化,colorchange这个函数在行数发生变化时并没有及时得到更新,它获取到的数据依旧是之前的数据,解决方式:将所有与鼠标经过事件相关的数据再次封装到一个新的函数里,窗口加载完毕时调用这个函数,在add()与del()函数里也对其进行调用。
可能是函数执行顺序问题你获取了trs数组之后再添加不就没有获取新添加的 先调用 add()函数在获取试试
JavaScript进阶篇
468061 学习 · 21891 问题
相似问题
回答 3
回答 2