javascript - window.onload代码不使用匿名函数包裹报错
迷茫
迷茫 2017-04-10 15:16:14
0
3
266

我想实现的是类名点击切换效果,具体的功能实现没有问题,只是在一开始的 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了。

Ty80

把del()的()去掉

window.onload = del;
PHPzhong
window.onload = funcRef;

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

参考:
window.onload

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!