programing

자바스크립트의 루프 타이머

yellowcard 2023. 10. 17. 20:10
반응형

자바스크립트의 루프 타이머

나는 자바스크립트 코드 세이를 2000밀리초마다 실행해야 합니다.

setTimeout('moveItem()',2000)

위에서 2000밀리초 후에 함수를 실행하지만 다시 실행하지는 않습니다.

moveItem 기능 안에는 다음과 같은 기능이 있습니다.

function moveItem() {
    jQuery(".stripTransmitter ul li a").trigger('click');
    setInterval('moverItem()',2000);
}

트리거 클릭 jQuery 코드 조각을 2000밀리초 간격마다 실행하고 싶기 때문에 작동하지 않지만 지금은 항상 호출되고 있으며 스크립트를 중단해야 합니다.그 외에도 이것은 매우 나쁜 품질의 코딩이라고 생각합니다.어떻게 해결하실 겁니까?

참고:setTimeout그리고.setInterval는 매우 다른 기능입니다.

  • setTimeout는 타임아웃 후에 코드를 번 실행합니다.
  • setInterval는 제공된 타임아웃 간격으로 코드를 영원히 실행합니다.

두 함수 모두 타임아웃을 중단하는 데 사용할 수 있는 타이머 ID를 반환합니다.당신이 해야 할 일은 변수에 그 값을 저장하고 그것을 인수로 사용하는 것입니다.clearTimeout(tid)아니면clearInterval(tid)각각 다음과 같다.

따라서 원하는 작업에 따라 다음 두 가지를 선택할 수 있습니다.

// set timeout
var tid = setTimeout(mycode, 2000);
function mycode() {
  // do some stuff...
  tid = setTimeout(mycode, 2000); // repeat myself
}
function abortTimer() { // to be called when you want to stop the timer
  clearTimeout(tid);
}

아니면

// set interval
var tid = setInterval(mycode, 2000);
function mycode() {
  // do some stuff...
  // no need to recall the function (it's an interval, it'll loop forever)
}
function abortTimer() { // to be called when you want to stop the timer
  clearInterval(tid);
}

두 가지 모두 동일한 것을 달성하는 매우 일반적인 방법입니다.

setInterval(moveItem, 2000);

는 기능을 실행하는 방법입니다.moveItem2초마다당신 코드의 가장 큰 문제는 당신이 전화하고 있다는 것입니다.setInterval콜백의 외부가 아닌 내부에 있습니다.내가 당신이 하려는 일을 이해했다면, 당신은 다음을 사용할 수 있습니다.

function moveItem() {
    jQuery('.stripTransmitter ul li a').trigger('click');
}

setInterval(moveItem, 2000);

N.B: 문자열을 전달하지 마십시오.setTimeout아니면setInterval- 최상의 방법은 익명 함수 또는 함수 식별자를 전달하는 것입니다(위에서 한 것처럼).또한 큰따옴표와 큰따옴표가 섞이지 않도록 주의해야 합니다.골라주세요.

다음이 되어야 합니다.

function moveItem() {
  jQuery(".stripTransmitter ul li a").trigger('click');
}
setInterval(moveItem,2000);

setInterval(f, t)인수 함수를 호출합니다.f, 매회t밀리초

setInterval()을 찾으시는 것 같습니다.

여기 html 코드의 자동 루프 기능이 있습니다.저는 이것이 누군가에게 유용할 수 있기를 바랍니다.

<!DOCTYPE html>
<html>
<head>
<style>
div {
position: relative;
background-color: #abc;
width: 40px;
height: 40px;
float: left;
margin: 5px;
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<p><button id="go">Run »</button></p>
<div class="block"></div>
<script>

function test() {
$(".block").animate({left: "+=50", opacity: 1}, 500 );
   setTimeout(mycode, 2000);
};
$( "#go" ).click(function(){
test();
});
</script>
</body>
</html>

Fiddle: DEMO

당신은 다음과 같은 것을 시도해야 합니다.

 function update(){
    i++;
    document.getElementById('tekst').innerHTML = i;
    setInterval(update(),1000);
    }

이것은 당신이 해야 할 일을 하는 기능을 만들고, 당신이 원하는 간격으로 스스로를 부를 수 있도록 해야 한다는 것을 의미합니다.Body on load에서 이 기능을 처음으로 호출합니다.

<body onload="update()">

언급URL : https://stackoverflow.com/questions/2133166/loop-timer-in-javascript

반응형