问答详情
源自:4-2 [DOM事件] QQ面板拖拽效果(下)

为什么我把关闭的函数写在onload外面,就报错了?

http://img.mukewang.com/57c94dfb00013bd009000484.jpg

代码写在1的位置,就报错,报错如下:

http://img.mukewang.com/57c94e1b00014c3e06010076.jpg

代码写在2的位置,就可以正常使用,这是为什么呢?求解!!

提问者:_小奕_ 2016-09-02 18:02

个回答

  • clownis
    2016-09-03 15:01:50
    已采纳

    window.onload是一个事件函数,指当页面加载完成后,立即调用的函数。代码中,你将drag这个函数赋值给window.onload,那么当页面加载完成后,就会调用drag函数。

    document.getElementById('ui_boxyClose')的作用是从当前DOM树中获取id为ui_boxyClose的元素,DOM树在页面加载完成后才是完整的,也就是说只有写在drag函数里,才能在完整的DOM树中根据id值获取你想要的元素。

    如果你将document.getElementById('ui_boxyClose')写在onload函数外面(或者说写在drag函数外面),此时执行js文件,是有可能获取不到指定id值的元素(取决于js脚本文件在html中的位置),所以就会报错,不能为一个null空值设置onclick事件函数,即说明没有找到id为ui_boxyClose的元素。