大神们,为什么要用.lastChild,还有新增行的函数里要再次调用Highlight();

来源:9-22 编程练习

zhanhonglv

2018-10-24 10:54

  <script type="text/javascript">  

window.onload = function(){

Highlight();

}  

function addOne(obj){ 

    var tbody = document.getElementById('table').lastChild;  

var tr = document.createElement('tr');  

 

var td = document.createElement("td");

td.innerHTML = "<input type='text'/>";

tr.appendChild(td);

 

td = document.createElement("td");  

td.innerHTML = "<input type='text'/>";

tr.appendChild(td);

 

td = document.createElement("td");

td.innerHTML = "<a href='javascript:;' onclick='deleteRow(this)'>删除</a>";

tr.appendChild(td);   

 

tbody.appendChild(tr);   

Highlight();

    }


function deleteRow(obj){

    var tbody = document.getElementById('table').lastChild;  

var tr = obj.parentNode.parentNode;

tbody.removeChild(tr);

}

function Highlight(){

var tbody = document.getElementById('table').lastChild;

trs = tbody.getElementsByTagName('tr');   

for(var i =1;i<trs.length;i++){

trs[i].onmouseover = function(){

this.style.backgroundColor ="#f2f2f2";

trs[i].onmouseout = function(){

this.style.backgroundColor ="#fff";

}  

}


  </script> 

写回答 关注

2回答

  • 慕勒300643
    2018-11-16 13:45:41

    不好意思,问一下,所以是有参考答案的吗....??!!

  • 草率先生
    2018-10-27 15:25:18

    因为之前的控制变色事件是在onload里,所以后面新加的行是没有添加到控制变色事件的。之所以要用lastChild是因为新加的行是最后一个节点,你这里的Hightlight是添加控制变色事件的函数。

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468194 学习 · 21891 问题

查看课程

相似问题