[英]Cannot read property 'style' of undefined at slideshow ERROR
我是 javascript 新手,我正在嘗試在 div 中創建幻燈片。 但是,當我這樣做時,會給我錯誤消息
未捕獲的類型錯誤:無法在 script.js:1 處的幻燈片放映 (script.js:14) 中讀取未定義的屬性“樣式”
這是我的 HTML 代碼:
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<script type="text/javascript" src="script.js"></script>
<div id="wrapper">
<div id="content">
<div id="top">
<img class="slide" src="1.png" style="width:100%">
<img class="slide" src="2.png" style="width:100%">
</div>
<div id="left">
</div>
<div id="middle">
</div>
<div id="right">
</div>
</div>
</div>
</body>
</html>
這是我的 CSS 代碼:
.slide {
display:none;
}
這是我的 Javascript 代碼:
slideshow();
function slideshow() {
var index = 0;
var i;
var slides = document.getElementsByClassName("slide");
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
index++;
if (index > slides.length) {
index = 1;
}
slides[index-1].style.display = "block";
setTimeout(slideshow, 2000);
}
我認為問題是當它們在 div 中時 javascript 無法訪問圖像。
1.您將<script>
文件放在幻燈片之前。 所以當你的腳本第一次被執行時,標記還不存在於DOM
。
因為你的幻燈片不存在,在初始for
(什么都不做)之后,你會看到這一行
slides[index-1].style.display = "block";
但是slides[0]
不存在,所以它沒有.style
屬性。
2.每次重新運行該函數時,您都將0
的值重新分配給index
,因此它將始終顯示相同的幻燈片:第一張。
(3.)您選擇display
作為顯示/隱藏幻燈片的方法,該方法不可動畫。 因此,你的幻燈片會突然改變,沒有過渡的可能性。
(4.)另外,就個人選擇而言,我更喜歡document.querySelectorAll('.slide')
到document.getElementsByClassName("slide")
。 我不知道確切的原因。 可能是因為它更短,也可能是因為它允許更靈活的選擇器語法(類、ID、屬性或任何其他有效的css
選擇器)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.