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

来源:9-22 编程练习

Kevin3764939

2016-08-09 15:34

      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就不触发,这是因为什么?

写回答 关注

3回答

  • 海的那边是海
    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是指页面加载完立即执行的意思

    Kevin3...

    不是吧,本例的添加按钮也是写在onload里面的,放外面不触发。而且本例放在window.onload里的添加按钮和mouseover事件也是需点击和鼠标覆盖才触发,并不是加载完立即执行。

    2016-08-09 17:15:44

    共 1 条回复 >

JavaScript进阶篇

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

468061 学习 · 21891 问题

查看课程

相似问题