最近,我一直在研究一个错误很长时间。一段时间后,我设法找到了问题并解决了它,但我不明白为什么会出现错误。我做错了吗?
比如我的目录结构:
build
--index.html
--about.html
--contact.html
--app.js
因此,所有三个 HTML 文档都称为同一个外部 app.js 文件。
使用 jQuery,我有这个
$(document).ready(function(){
$('#img1').... // some other functions here. #img1 is only found in index.html
$('#foo').hide(); // hiding the div. #foo is in all the HTML files in the directory.
}
现在问题来了-> #foo 隐藏在 index.html 中,但没有隐藏在 about.html 和 contact.html 中
当我$('#img1')
从 app.js 中删除 及其函数时,#foo 然后隐藏在所有三个 HTML 文件中。似乎由于找不到名为#img1 的id,脚本的其余部分是多余的about.html
。contact.html
我设法通过$('#foo').hide();
之前的工作来解决问题$('#img1')
....
但是,我很好奇为什么会这样?如果找不到#img1 并继续执行下一个函数等,jquery 不应该不在乎吗?在这种情况下,这是否意味着我不能在一个 app.js 中缩小我的脚本?我是不是错过了什么。*PS 我不是 javascript 专业人士。
更新(8 月 31 日)-> 对不起,伙计们,我想我发现了这个问题。这与 Greensock 动画平台有关(仅时间轴)
var slide1 = document.getElementById('slide-1'),
slide2 = document.getElementById('slide-2'),
slide3 = document.getElementById('slide-3'),
slide4 = document.getElementById('slide-4'),
slide5 = document.getElementById('slide-5');
var slideArray = [slide1, slide2, slide3, slide4, slide5];
var tl = new TimelineLite({}),
delayTiming = 2.5,
fadeTiming = 2;
tl
.to(slideArray, 0, {opacity:0})
.to(slide2, fadeTiming, {opacity:1, delay:delayTiming})
.to(slide3, fadeTiming, {opacity:1, delay:delayTiming})
.to(slide4, fadeTiming, {opacity:1, delay:delayTiming})
.to(slide5, fadeTiming, {opacity:1, delay:delayTiming, onComplete:fadeOutLastSlide});
不知何故 tl 找不到 slideArray (或其子项),当它找不到任何元素并导致它下面的脚本不起作用时?
我应该删除这个帖子吗?