2017-02-26 1 views
0

그래서 나는 사용자가 버튼을 클릭 할 수있는 프로그램을 만들고, 프로그램이 계산을 수행하고 체크 박스를 선택하면 루프에서 같은 계산을 수행 할 것입니다.체크 박스 무한 루프가 발생합니다

<body> 
    <button onclick="javascript:calc();"> Calculate</button> 
    <form action=""> 
    <input id="checkbox" type='checkbox' name='auto' value='Auto' /> 
    </form> 

    <script> 
    var checkbox = document.getElementById('checkbox'); 
    function calc() { 
    do{ 
    //Calculate stuff 
    }while(checkbox.checked); 
    } 
    </script> 

    </body> 

문제는 내가 확인란을 선택하면 내가 그것을 중지의 체크 박스를 체크 해제 할 수 있도록이 무한 루프에 갇혀 있기 때문에 웹 페이지가 바로 정지 점이다.

무한 루프로 들어가는 것을 막을 수있는 방법이 있습니까?

+0

예, 방법이 있습니다. [이벤트 수신] (https://developer.mozilla.org/en-US/docs/Web/Events)이라고합니다. – Teemu

답변

0

확인란을 선택하면 코드를 무한 루프에 넣을 수 있습니다. 그러면 페이지가 고정되고 사용자가 상자를 선택 취소 할 수 없습니다. 그런 식으로 setTimeout을 사용하여 무언가를 시도 할 수 있습니다.

const foo =() => { 
    if (checkbox.checked) { 
    //do math 
    setTimeout(() => { 
     foo(); 
    }, 3000) 
    } 
} 

체크 박스를 클릭 할 때 발생하는 기능을 설정하고 그것을 선택하면, 당신은 계산을 할 수 있으며 재귀 삼초 후 다시 자신을 호출하고 확인란을 여전히 선택되어 있는지 확인합니다.

0
function calc(){ 
if(conditionIsTrue){ // do smth here} 
else{ 
//do another stuff here 
} 
} 
0

무한 루프를 작성하지 않는 방법이 있습니까? 체크 박스가 선택되어있는 동안 부분을 계속 수행하고 있습니다 (사용자가 break을 가지고 있지 않은 경우). 그리고 ui 스레드에서 실행되기 때문에 UI가 고정됩니다.

관련 문제