2013-01-08 3 views
0

나는 다음과 같은 코드를 사용하여 주기적으로 레이블의 텍스트를 변경하려고 :변경 레이블 텍스트 정기적으로 자바 스크립트

function sleep(milliSeconds) { 
     var startTime = new Date().getTime(); 
     while (new Date().getTime() < startTime + milliSeconds); 
    } 
    function showMap() { 
     var str = document.getElementById("lbPoints").firstChild.nodeValue; 
     var lbl = document.getElementById("my"); 
     var strs = str.split("-"); 
     var millisecondsToWait = 500; 

     for (var i = 0; i < strs.length-1; i++) { 
      lbl.innerHTML = strs[i]; 
      sleep(500); 
     }  
    } 

내 "STR"와 "strs은"맞다. 코드는 작동하지만 5 초 동안 대기하고 마지막 문자열을 strs로 화면에 출력합니다. 정기적으로 변경하려면 어떻게해야합니까?

+2

반세기 동안 전체 스레드 *를 잠그고 있음을 알기를 바랍니다. 제발 그만 하지마. 대신 [setInterval'] (https://developer.mozilla.org/en-US/docs/DOM/window.setInterval)을 사용하십시오. –

+0

나는 여기서 답을 얻기 전에 인터벌을 시도했는데 성공하지 못했습니다. 인터넷에서 이것을 발견했습니다. 이것은 작은 프로젝트 였고 너무 신경 쓰지 않았습니다. 그러나 그것을 지적 해 주셔서 감사합니다. –

답변

3

그건 자지 않는 방법입니다. 어떤 언어로도 날짜까지 을 반복적으로 테스트하는 것이 옳습니다.

function showMap() { 
    var str = document.getElementById("lbPoints").firstChild.nodeValue; 
    var lbl = document.getElementById("my"); 
    var strs = str.split("-"); 
    var millisecondsToWait = 500; 
    var i=0; 
    var interval = setInterval(function(){ 
     if (i==strs.length-2) clearInterval(interval); 
     lbl.innerHTML = strs[i++]; 
    }, millisecondsToWait); 
} 

Demonstration

이 반복적으로 함수를 호출하는 setInterval를 사용하고, 배열의 끝에 clearInterval는 함수가 호출되는 중지 :

대신이 작업을 수행합니다.

+0

왜 즉시 투표를해야합니까? 이것은 작동하지 않습니다. –

+0

아무 것도 설명하지 않습니다. – Madbreaks

+0

@IsmetAlkan 편집 된 답변보기. 수정 ('var i = 0')과 링크. –

2

그냥 setInterval을 사용하십시오. documentation에서 :

함수 호출 또는 함수 호출 할 때마다 고정 사이의 시간 지연과, 반복 코드를 실행한다.

+1

약간 혼란스러워. 얼마나 정확하게 보여줄 수 있니? –

+1

+1하지만 예는 아프지 않습니다. –

+0

위의 예가있는 문서에 대한 링크로 나의 대답을 업데이트했습니다. – Madbreaks

관련 문제