2011-05-15 3 views
1

나는 꽤 오랫동안이 일을 해왔다. 카운트 다운하는 간단한 타이머를 만들려고합니다. 경고()가 작동하지만, 불행하게도 textToChange는 변경되지 않습니다. 나는 아래 코드를 복사했다. 어떤 도움이라도 대단히 감사하겠습니다! 고맙습니다.setInterval()을 사용하여 텍스트를 어떻게 바꿀 수 있습니까?

<script type="text/javascript"> 
    var timeLeft = 0; 
    var changingTextElement; 
    var changingText = new Array(); 
    var ctr = 0; 

    function timeMsg(thing) 
    { 
    var length = thing.inputbox.value*1000; 
    var t = setTimeout("alertMsg()",length); 
    timeLeft = length/1000; 
    initChangeText(); 
    } 

    function alertMsg() 
    { 
    alert("Alert!"); 
    } 

    function initChangeText(){ 
     changingTextElement = document.getElementById("textToChange"); 
     changingText[ctr] = changingTextElement.innerHTML; 
     ctr++; 
     while(timeLeft > 0){ 
      changingText[ctr] = timeLeft; 
      timeLeft--; 
      ctr++; 
     } 
     ctr = 0;  
     setInterval("changingText()",1000); 
    } 

    function changingText() { 
     ctr++; 
     if(ctr >= changingText.length){ 
      changingTextElement.innerHTML = 0; 
     } 
     else{ 
      changingTextElement.innerHTML = changingText[ctr]; 
     } 
    } 

</script> 
+0

당신은 또한 당신의 HTML을 게시 할 수 있도록 우리가 아이디의를 확인할 수 있습니다 변경 등 요소? – WSkid

+0

'changingText' 배열을 만들 이유가 없습니다 (잠재적으로 커질 수 있습니다). 당신은 즉시 값을 계산할 수있는 올바른 값을 계산할 수 있습니다. –

+0

@Thomas : 아니요, 'changingTextElement'는 스크립트 블록의 맨 위에있는 전역 범위에 정의되어 있습니다. 'var'을 추가하면 어떤 식 으로든 작동하지 않습니다. –

답변

3

당신은 changingText 기능과 changingText 배열을 사용하는 ...

충돌을 참조하십시오? 추가 정보로


,

setInterval 방법에 이름 기능과 같은 문자열을 사용하지 마십시오. 메서드에 대한 참조를 직접 사용하십시오.

setInterval(changingText, 1000); 
+0

너무 길어서 그 중 하나를 찾아 낼 수 없습니다. 바이올린의 낭비 :( – mplungjan

1

간단한 카운트 다운 타이머의 경우이 코드가 너무 큽니다. 기본적으로, 당신이 일을해야하는 것입니다 :

  • 시작에게 카운터를 감소시키고

하는 것이 될 수 있음을 표시합니다 setInterval를 사용하여 타이머를 카운트 다운되어야하는 시간 (초)을 설정합니다 간단하게 :

var countFrom; 
var timer; 
function run_timer() { 
    document.getElementById("textToChange").innerHTML = --countFrom; 
    // !0 evaluates to true, if the counter reaches 0 (wait 0 seconds) ... 
    if (!countFrom) { 
     clearInterval(timer); 
     alert("Timer finished!"); 
    } 
} 
function init_timer() { 
    // stop previous timers if any 
    clearInterval(timer); 
    // start counting from 30 seconds 
    countFrom = 30; 
    timer = setInterval(run_timer, 1000); 
} 
관련 문제