【发布时间】:2014-04-08 12:53:52
【问题描述】:
当我注意到控制台中有一些错误时,我正试图整理我正在修改的模板的内联 js 脚本并将它们组合到一个外部 js 文件中。他们没有对网站的功能造成任何损害,但我想知道我做错了什么以及如何解决它。
我的外部js文件是:
<script type="text/javascript" src="web/js/init.js"></script>
Link 1 抛出以下错误:
Uncaught TypeError: Object [object Object] has no method 'owlCarousel'
(我不在那个页面上使用那个轮播......)
Link 2 我使用 carousal 的地方会抛出此错误:
Uncaught TypeError: Object [object Object] has no method 'nivoSlider'
(我不使用该页面上的滑块)
Link 3 我保留了内联脚本(没有外部 js 文件),并且没有与外部/内部 js 相关的 js 错误。
谢谢!
【问题讨论】:
-
合并时,您的函数仍在尝试使用各自页面中不存在的内容。最后一个没有抛出任何错误的原因是因为页面上没有“owlCarousel”,并且它从未被调用过,但是加载了一个 nivoSlider 并具有与之关联的元素。加载时的外部 javascript 文件会提前运行所有内容,因为没有函数封装。如果您要将所有内容放在外部 javascript 文件中,则必须将“加载程序”放在它们自己的函数中,当这些元素存在时,该函数会被调用。
-
我还建议只调用你的 $(function(){});一次。无需为您正确的每段代码单独调用它。此外,我会将您的脚本放在页脚而不是页眉中。
-
@blakev 所以把所有的函数都包装在: $(window).load(function() ? Thesublimeobject,你的意思是把所有的 js/css 从头部取出来放在
标签: javascript jquery html css