2013-09-27 2 views
2

스크립트가 작동하지만 30 초 정도 지나도 setInterval이 브라우저를 계속 충돌시킵니다. 적어도 나는 그렇게 생각합니다.사용자 스크립트를 실행할 때 setInterval이 브라우저를 크래시합니까?

var count = 0; 

setInterval(function() 
{ 
    var ifLose = document.getElementById('result-text').innerHTML; 

    if (ifLose.length > 4) 
    { 

     count++; 
     document.getElementById("bet-multiplier").click(); 
     document.getElementById("bet-bt").click(); 

    } 
    else 
    { 
     for (count > 0; count--;) 
     { 

     document.getElementById("bet-divider").click(); 

     } 

     document.getElementById("bet-bt").click(); 

    } 
}, 1000); 

내가 잘못 뭐하는 거지 : 여기

코드인가? count 및 for 루프와 관련이 있습니까? 도움을 주시면 대단히 감사하겠습니다!

답변

2

이 줄은 (적어도 나 문제의 큰 부분) 문제입니다 : 타이머 핸들러가 실행되는 처음 후

for (count > 0; count--;) 

, "계산"-1 일 것이다. 이 루프는 정말 오랜 시간 동안 계속 될 것입니다.

당신은 아마 원하는

for (; count > 0; count--) 

for 루프 헤더는 세 부분이 있습니다 : 당신이 반복 제어를 할 수 있지만, 정말로 단지를 어느 곳 전통적 초기화, 테스트 및 ... 으음, 세 번째 부분을, 표현을 넣을 곳. 원래 코드에는 먼저 테스트식이 있습니다. 은 구문 적으로이 아니므로 JavaScript는 표현식을 기대하기 때문에 그와 같은 비교 표현식은 괜찮습니다. 그러나 실제로는 아무 것도하지 않습니다. 귀하의 버전에있는 테스트 표현은 count--이었으며, 이는 구문 상으로는 좋으며 테스트 표현에는 좋지 않습니다. 그러나 인터벌 핸들러는 결코 "count"를 0으로 리셋하지 않기 때문에, -1로 줄이면 루프가 계속 진행됩니다.

+0

감사합니다. 이것은 나를 위해 그것을 고쳤습니다 : D 그래서 내 구문에 그냥 문제가! 이 줄과 내가 원래 가지고 있던 줄의 차이점을 설명해 주시겠습니까? 나는 왜 원래의 코드에서 -1이 될지 확신 할 수 없다. – gbachik

+0

@ user1115155 그래, 나는 대답에 조금 더하고있다. – Pointy

+0

감사합니다. 나를 많이 도왔습니다! – gbachik

관련 문제