2016-11-22 2 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 Я спрашивал своего учителя, и я не знаю, имела ли она в виду, что это число, будет ли оно работать, если оно пустое или мне нужно 0-4? – Alex204

ответ

1

Во-первых, это:

document.getElementsByTagName"img") 

должен быть таким:

document.getElementsByTagName("img") 

Второе: image[o].src использует букву o и использовать номер 0

В-третьих, case ветви не нужно вернуть что-нибудь. Им просто нужно установить счетчик значений. return используется по двум причинам. Во-первых, просто выйти из функции и вернуть управление вызывающему. В вашем случае заявления break уже делают это, поэтому return не помогает. Вторая причина использования return заключается в том, чтобы функция возвращала общий результат вызывающему. Это не то, что вы здесь тоже - вы не хотите, чтобы значение было отправлено обратно из функции, вы просто хотите, чтобы функция обновляла источник изображения.

В-четвертых, нет необходимости повторять настройку источника изображения. Просто установите переменную в нужное значение, а затем измените источник за пределами 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

И, в-пятых, полностью избавитесь от блока switch и просто увеличивайте переменную (используя либо 'if', либо'% ', чтобы разрешить случай с 5> 1) ... – nnnnnn

+0

@nnnnnn Да, но если вы читаете OP, задача заключалась в использовании «переключателя». –

Смежные вопросы