2016-11-22 6 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

다섯째, 스위치 블록을 완전히 없애고 변수를 증가시킵니다 (if> 또는'% '를 사용하여 5 -> 1 경우를 허용합니다) ... – nnnnnn

+0

@nnnnnn 예,하지만 OP, 도전은 '스위치'를 사용하는 것이 었습니다. –

관련 문제