为了账号安全,请及时绑定邮箱和手机立即绑定

关于参考答案中的var _table=document.getElementById("table").lastChild;

      window.onload = function(){
        _change();
      }
                  
     // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。
     function _change(){
      var _table=document.getElementById("table").lastChild;
      var _trs=document.getElementsByTagName("tr");
      for (var i = 0; i < _trs.length; i++) {
        _trs[i].onmouseover=function(){
          this.style.backgroundColor="#f2f2f2";
        }
        _trs[i].onmouseout=function(){
          this.style.backgroundColor="#fff";
        }
      }
     }    
		
     
	 
	 
     
      // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;
     function _add(obj){
         var _table=document.getElementById("table").lastChild;
         var _tr=document.createElement("tr");
         
         var _td=document.createElement("td");
         _td.innerHTML="<input type='text'/>";
         _tr.appendChild(_td);
         
         var _td=document.createElement("td");
         _td.innerHTML="<input type='text'/>";
         _tr.appendChild(_td);
         
         var _td=document.createElement("td");
         _td.innerHTML="<a href='javascript:;' onClick='_remove(this)' >删除</a>";
         _tr.appendChild(_td);
         
         _table.appendChild(_tr);
         
         _change();
         
     }
    		
   	 
     // 创建删除函数
     function _remove(obj){
        var _table=document.getElementById("table").lastChild;
        var _tr=obj.parentNode.parentNode;
        _table.removeChild(_tr);
     }

这里为什么每个函数内定义的第一个变量都要取.lastChild不是很懂

还有window.onload = function()这句话我也不是很能理解,函数不是可以直接调用吗,为什么要加这句话?求助大神解答啊啊啊

正在回答

4 回答

tbody是table的内置属性,还有thead,tfoot,分别是表头,表尾。

tbody元素是必须的,就是你页面代码没写tbody真正运行的时候页面会给每个table加一个tbody,所以table.tr的父子链连不起来,必须是table.tbody.tr才可以

4 回复 有任何疑惑可以回复我~
#1

楠木楼林3812467 提问者

非常感谢!
2016-09-22 回复 有任何疑惑可以回复我~
#2

new新的开始

那这样为什么要最后一个节点呢……他的第一个节点也是tbody啊
2016-10-14 回复 有任何疑惑可以回复我~

还有window.onload = function()这句话我也不是很能理解,函数不是可以直接调用吗?

>>这句话就是在加载网页的时候就调用高亮的函数,不调用就没法运行该函数啊。

0 回复 有任何疑惑可以回复我~

答案里的是table下还有tbody标签,然后tbody标签里面才是tr,貌似比我们这个里多了个tbody。用lastchild也许是兼容把?因为table下除了tbody节点外还有空白处也算节点。lastchild确保获得的节点是tbody节点。

0 回复 有任何疑惑可以回复我~
#1

楠木楼林3812467 提问者

啊?没有啊,没看到tbody标签诶。。。
2016-09-20 回复 有任何疑惑可以回复我~

1、添加个删除都是对table下的lastChild操作的,所以就顺便这样定义了吧

2、window.onload = function()的作用时保证先加载body段,后加载运行script段;如果没有这句话,就会按照从上到下的顺序执行,也就会导致getElement这些操作都返回失败了

0 回复 有任何疑惑可以回复我~
#1

楠木楼林3812467 提问者

table的lastChild不是空白文本吗,还有就是之前在看removeChild的例子的时候都是直接父节点删除的,为啥这里要取最后一个子节点我还是不理解诶。
2016-09-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于参考答案中的var _table=document.getElementById("table").lastChild;

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信