search

Home  >  Q&A  >  body text

javascript - window.onload代码不使用匿名函数包裹报错

我想实现的是类名点击切换效果,具体的功能实现没有问题,只是在一开始的 window.onload 有一些疑惑。HTML代码为:

HTML代码:
<p id="del" class="del">
    <dl>
        <dt>配送类型:</dt>
        <dd class="selected" value=0><a href="#">全部</a></dd>
        <dd value=1><a href="#">京东配送</a></dd>
        <dd value=2><a href="#">第三方配送</a></dd>
    </dl>
</p>

具体代码见 demo
该 demo 是能够正常实现的,在本地实现的时候,js文件是在<body>标签内最后引入的。现在的问题是,如果改变 window.onload 的写法就会报错,不报错代码如下:

JS代码:
window.onload = function(){
    del();
};

报错代码如下:(报错为:Uncaught TypeError: Cannot read property 'length' of undefined, 即 dd 为 undefined )

JS代码:
window.onload = del();//即去掉外面包裹的匿名函数

以上情况,都是当将该语句放在脚本文件的开头处。
经测试,如果将上面会报错的代码语句,放置在脚本文件最后的位置,不会报错。
所以想问一下,其中的问题在哪里?

迷茫迷茫2827 days ago296

reply all(3)I'll reply

  • 怪我咯

    怪我咯2017-04-10 15:18:14

    从报的错误来看,是你的函数在获取dom元素之前被调用了,所以获取不到你的dd,所以dd是undefined,所以undefined没有length。

    那么,如果你将js代码放在</body>之前,那么久不需要window.onload了。

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:18:14

    把del()的()去掉

    window.onload = del;
    

    reply
    0
  • PHPz

    PHPz2017-04-10 15:18:14

    window.onload = funcRef;
    
    这里 funcRef 函数引用。应该 window.onload = del
    

    参考:
    window.onload

    reply
    0
  • Cancelreply