2016-11-22 2 views
-1

Ich brauche eine Funktion, die das Bild alle 3 Sekunden ändert. Hier ist mein Code, es muss die Fallstruktur verwenden, nicht sicher, was falsch ist, irgendwelche Vorschläge?Funktion, die ein Bild alle 3 Sekunden ändert

<script> 
"use strict"; 
    var currentImage = 1; 
    var autoAdvance = setInterval(ChangeAd, 3000); 

    function ChangeAd() { 
    var image = document.getElementsByTagName"img"); 
    switch(currentImage){ 
     case 1: 
      currentImage = 2; 
      return image[o].src = "concert2.gif"; 
      break; 
     case 2: 
      currentImage = 3; 
      return image[o].src = "concert3.gif"; 
      break; 
     case 3: 
      currentImage = 4; 
      return image[o].src = "concert4.gif"; 
      break; 
     case 4: 
      currentImage = 5; 
      return image[o].src = "concert5.gif"; 
      break; 
     case 5: 
      currentImage = 1; 
      return image[o].src = "concert1.gif"; 
      break; 
    } 

    } 
</script> 
+2

document.getElementsByTagName "img"); = document.getElementsByTagName ("img"); – baao

+2

'[o]' - was ist das? Meinst du " –

+0

@baao" Ich fragte meine Lehrerin und ich weiß nicht, ob sie meinte, es wäre eine Nummer, würde es funktionieren, wenn das leer wäre oder brauche ich 0-4? – Alex204

Antwort

1

Zuerst dies:

document.getElementsByTagName"img") 

sollte dies sein:

document.getElementsByTagName("img") 

Zweitens: image[o].src verwendet den Buchstaben o und sollte die Nummer 0

Drittens verwenden die case Zweige müssen nicht alles zurückgeben. Sie müssen nur den Wert-Zähler setzen. return wird aus zwei Gründen verwendet. Die erste besteht darin, die Funktion einfach zu beenden und die Steuerung an den Aufrufer zurückzugeben. In Ihrem Fall, die break Anweisungen tun das schon, also hilft return nicht. Der zweite Grund für die Verwendung von return ist, dass die Funktion dem Aufrufer ein Gesamtergebnis zurückgibt. Das ist auch nicht das, was Sie hier suchen - Sie wollen keinen Wert von der Funktion zurücksenden, Sie wollen nur, dass die Funktion die Quelle des Bildes aktualisiert.

Viertens muss die Einstellung der Bildquelle nicht wiederholt werden. Setzen Sie einfach eine Variable auf den richtigen Wert und ändern Sie die Quelle außerhalb von switch.

"use strict"; 
 
    var currentImage = 1; 
 
    var autoAdvance = setInterval(ChangeAd, 3000); 
 
    var image = document.getElementsByTagName("img"); 
 
    var source = ""; 
 

 
    function ChangeAd() { 
 
    switch(currentImage){ 
 
     case 1: 
 
      currentImage = 2; 
 
      break; 
 
     case 2: 
 
      currentImage = 3;  
 
      break; 
 
     case 3: 
 
      currentImage = 4;   
 
      break; 
 
     case 4: 
 
      currentImage = 5;  
 
      break; 
 
     case 5: 
 
      currentImage = 1;  
 
      break; 
 
    } 
 
    
 
    // Once you break out of the matched case branch, 
 
    // you'll wind up here and all you need to do is 
 
    // use the value of your counter to set up the image: 
 
    source = "concert" + currentImage + ".gif"; 
 
    image[0].src = source; 
 
    image[0].alt = source; 
 
    }
<img src="someimg.jpg" alt="some image">

+0

Und fünftens, loswerden Sie den Schalter Block vollständig und nur inkrementieren Sie die Variable (entweder mit einem 'if' oder'% ', um die 5-> 1 Fall zu ermöglichen) ... – nnnnnn

+0

@nnnnnn Ja, aber wenn Sie die lesen OP, die Herausforderung bestand darin, einen 'Schalter' zu verwenden. –

Verwandte Themen