javascript - window.onload代码不使用匿名函数包裹报错
迷茫
迷茫 2017-04-10 15:16:14
[JavaScript讨论组]

我想实现的是类名点击切换效果,具体的功能实现没有问题,只是在一开始的 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();//即去掉外面包裹的匿名函数

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(3)
怪我咯

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

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

PHP中文网

把del()的()去掉

window.onload = del;
PHPz
window.onload = funcRef;

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

参考:
window.onload

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号