2015-09-26 42 views
1

我在亂搞,從零開始做一個簡單的輪播。起初,我用onclick="function()"通過圖像切換,那麼我想轉出來爲onload="setInterval(function, 4000)",但似乎已經打破東西...onload setInterval for carousel

下面是HTML:

<div id="carousel"> 
    <div class="carousel-image" onload="setInterval(newImage(this), 4000)"><img src="http://placehold.it/350x150">1</div> 
    <div class="carousel-image-off" onload="setInterval(newImage(this), 4000)"><img src="http://placehold.it/350x150">2</div> 
    <div class="carousel-image-off" onload="setInterval(newImage(this), 4000)"><img src="http://placehold.it/350x150">3</div> 
    <div class="carousel-image-off" onload="setInterval(newImage(this), 4000)"><img src="http://placehold.it/350x150">4</div> 
    <div class="carousel-image-off" onload="setInterval(newImage(this), 4000)"><img src="http://placehold.it/350x150">5</div> 
    <div class="carousel-image-off" onload="setInterval(newImage(this), 4000)"><img src="http://placehold.it/350x150">6</div> 
</div> 

這裏是腳本:

<script> 
     var arr = 0; 
     function newImage(el){ 
      var images = document.getElementById('carousel').children; 
      for (var i = 0; i < images.length; i++){ 
       images[i].className = "carousel-image-off"; 
      } if (arr < images.length-1){ 
       arr++; 
       images[arr].className = "carousel-image"; 
      } else { 
       arr = 0; 
       images[arr].className = "carousel-image"; 
      } 
     } 
</script> 
+0

在div上沒有onload,onload只能在body標籤上工作 – Molda

+0

謝謝。這可能是我需要聽到的。 – JoshuaT

回答

2

我簡化了一點點,改了一些東西。

HTML

<div id="carousel"> 
    <div class="carousel-image active"><img src="http://placehold.it/350x150">1</div> 
    <div class="carousel-image"><img src="http://placehold.it/350x150">2</div> 
    <div class="carousel-image"><img src="http://placehold.it/350x150">3</div> 
    <div class="carousel-image"><img src="http://placehold.it/350x150">4</div> 
    <div class="carousel-image"><img src="http://placehold.it/350x150">5</div> 
    <div class="carousel-image"><img src="http://placehold.it/350x150">6</div> 
</div> 

CSS

.carousel-image { 
    display:none; 
} 
.carousel-image.active { 
    display:inline; 
} 

的JavaScript

function newImage() { 
    var images = document.getElementsByClassName('carousel-image'); 
    for(var i = 0; i < images.length; i++) { 
     if(images[i].className.match('active')) 
     { 
      images[i].classList.remove('active'); 
      if(i >= images.length-1) 
      { 
       images[0].classList.add('active'); 
      } 
      else 
      { 
       images[i+1].classList.add('active'); 
      } 
      break; 
     } 
    } 
} 

setInterval(
    newImage, 
    1000 
); 

的jsfiddle

http://jsfiddle.net/nasd0ska/2/

注意

如果我是你,我會使用jQuery。操作DOM非常簡單方便!

+0

您的解決方案似乎沒有多少錯綜複雜。我決定回去嘗試一下一些普通的JS。連接類是不好的做法嗎?你會不得不原諒我的新事物。我很確定,現在考慮這一點並不錯。 – JoshuaT

+0

我以前用純JS工作。在使用像jQuery這樣的「助手」之前,爲了充分理解Javascript,開始是很好的。關於類,我不知道你對「連接」類的意思,但我通常更喜歡使用多個不同的類來處理我的代碼。 'classList'對此有很大的幫助。 – PiTiNiNjA

+0

希望我能夠提供幫助。如果你覺得正確,可以考慮一下「+1」或「接受的答案」:P – PiTiNiNjA