问答详情
源自:9-22 编程练习

哪些函数应该写在window.onload之内,哪些应该写在外面?

      window.onload = function(){
     // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。
        var tr =  document.getElementsByTagName("tr");
        for(var i=0;i<tr.length;i++){
            tr[i].onmouseover = function(){
              this.style.backgroundColor="#f2f2f2";
            }
            tr[i].onmouseout = function(){
              this.style.backgroundColor="#fff";
            }
        }
        // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;
          var btn = document.getElementById("btn");
          btn.onclick = function(){
            var oldtable = document.getElementById("table");
            var newtr = document.createElement("tr");
            newtr.innerHTML = "<td>xh001</td><td>王小明</td><td><a href='javascript:;' onclick='del2(this)'>删除</a></td> ";
            oldtable.appendChild(newtr);
          }
        // 创建删除函数
}
   
   function del2(obj){//obj是外面传入的参数this,也就是删除字段的节点TD
    var a=obj.parentNode.parentNode.parentNode;//获取最外层节点table
    var b=obj.parentNode.parentNode;//获取第二层节点TR,TR里有3个TD,为一行
    a.removeChild(b);//利用父节点table删除子节点TR
}

onclick事件放在window.onload函数外就不触发,而del2()放在window.onload就不触发,这是因为什么?

提问者:Kevin3764939 2016-08-09 15:34

个回答

  • 海的那边是海
    2016-12-02 17:10:09

    要有个外部调用,也就是在html页面里有个onclick="function()",你在script标签里把执行click发生的事件写好,应该就OK了吧

  • 慕粉3746023
    2016-08-09 17:27:34

    你看错了   它代码里面穿插的那些注释除了变换背景色那个都在window.onload之外,你可以重置代码看看,且那两个函数都在href和onclick中被调用了,而onmouseover只在函数中出现了,而函数没法自调用,而且该事件必须处于实时监测的状态,所以就加上了window.onload让它在页面加载完立即执行

  • 慕粉3746023
    2016-08-09 17:12:09

    可以由外部调用像是按钮  链接等等就不用写window.onload,window.onload是指页面加载完立即执行的意思