2016-11-22 21 views
-1

3秒ごとに画像を変更する機能が必要です。ここで私のコードですが、それはケースの構造を使用している、何が間違っているか、何か提案がありますか?3秒ごとに画像を変更する機能

<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]' - それはなんですか?あなたは '[0]'を意味しました –

+0

@baao私は先生に頼んでいましたが、それは数字であることを意味するかどうかわかりません、それが空であれば動作するでしょうか? – Alex204

答えて

1

まず、これは:

document.getElementsByTagName"img") 

はこのようになります。

document.getElementsByTagName("img") 

第二:image[o].srcは手紙oを使用し、数サード0

を使用する必要があり、case枝は必要ありません何かを返す。彼らはバリューカウンターを設定するだけです。 returnが2つの理由で使用されます。最初は、単に関数を終了し、呼び出し元に制御を戻すだけです。あなたのケースでは、breakステートメントはすでにそれを行うので、returnは役に立ちません。 returnを使用する2番目の理由は、関数が呼び出し側に全体的な結果を返すようにすることです。これはあなたの後ろにあるものではありません。 - 関数から値を返すことを望まない場合は、関数が画像のソースを更新したいだけです。

第4に、イメージソースの設定を繰り返す必要はありません。変数を適切な値に設定してから、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

5番目に、スイッチブロックを完全に取り除き、変数をインクリメントします( 'if'または'% 'を使用して5 - > 1のケースを許可します)。 – nnnnnn

+0

@nnnnnnはい、 OP、挑戦は 'スイッチを使用することでした。 –

関連する問題