【发布时间】:2017-03-14 20:17:14
【问题描述】:
我有一个关于我正在为某项作业制作的幻灯片放映的问题。我的调试技能不是最好的,因为我是 HTML 和 JS 的新手。我的问题来自从我的幻灯片 JS 中的一行获取 typeError 。问题出在这块这里:
var slideIndex = 0;
showSlides();
function showSlides() {
var i;
var slides = document.getElementsByClassName("mySlides");
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slideIndex++;
if (slideIndex > slides.length) {
slideIndex = 1
}
slides[slideIndex - 1].style.display = "block";
setTimeout(showSlides, 4000);
}
我的 HTML 是:
<img class="mySlides" src="http://www.kitchenaid.com/images/global/masthead-major-appliances.jpg">
<img class="mySlides" src="http://www.depotkitchen.com/wp-content/uploads/2015/05/kitchen-aid-appliances-1.jpg">
<img class="mySlides" src="http://washburns.com/media/k2/galleries/11/stainlesssteelkitchen2.jpg">
<img class="mySlides" src="https://www.appliancedepot.com/media/R37672.jpg">
问题在于slides[slideIndex-1].style.display = "block"; 这行我收到了错误:
TypeError: slides[{slideIndex-1)] 未定义。
有人知道这个问题的解决方案吗?感谢您的帮助!
调试页面报错截图如下:
【问题讨论】:
-
如果没有该类的元素
slides[0]将没有style属性。您确定该类中确实存在元素吗? -
你能确认 slides 数组中至少有一项吗?
-
我认为您的问题是
mySlides图像元素在脚本运行时未加载到页面上。等待页面加载或将脚本放在页面底部。 -
将其放置在页面底部可确保在 JS 执行之前加载所有 HTML,如果您使用的是 JQuery(如您已标记问题)你可以把它放在头上,把你的代码包装在
$(document).ready(function(){ //Code here })中以达到同样的效果。 -
嗯,这更有意义,我会更加仔细地分析脚本的放置位置。感谢大家的帮助!
标签: javascript jquery html typeerror