2017-01-10 23 views
-2

Я не могу получить эту работу:Javascript перерыв/продолжить заявление

var x = 1; 

while (x == 1) { 
} 

function changeX(val) { 
    if (val == 1) { 
      x = 1; 
    } else if (val == 0) { 
      x = 0; 
      break; 
    } 
} 

и независимо от того, что я делаю, я не могу получить эту работу. Я хочу сделать это: я хочу, чтобы цикл переставал работать, когда я выбираю «0» или набираю его или что-то еще. Я должен использовать break/continue.

Независимо от того, что я делаю, я ошибаюсь в использовании взлома или сбоев браузера.

PS. В HTML части я ставлю

<input type="text" value="1" onchange="changeX(this.value)"> 
+1

ваш цикл, пока не выполняет какой-либо код, вам нужно вызвать 'changeX' в вашем цикле, разрыв не требуется. Прямо сейчас вы просто сделаете 'while (x == 1)' навсегда, который ничего не стреляет – Alex

+2

Что вы пытаетесь сделать? Код войдет в бесконечный цикл, даже если не будет вызван changeX. И changeX не меняет x ... Если ваш код действительно работал, я бы сбросил javascript как сломанный. – SparK

+0

Пока ваш код JavaScript работает, страница заблокирована, и пользовательский ввод невозможен. – melpomene

ответ

0

Оформление работы кода:

В то время как будет блокировать браузеры нитку. Поэтому вы не можете нажать. Do:

var x=false; 
function react(){ 
    if(x){return;} 
    //your code 
    console.log("sth");//e.g. 
    setTimeout(react,0); 
} 
react(); 

Теперь вы можете сделать свой UI материал

function changeX(val) { 
    if (val == 0) { 
     x = true; 
    } 
} 

Что вы действительно хотите:

var timer=false; 

function input(val){ 
    if(timer){ 
     clearInterval(timer); 
     timer=false; 
    } 
    if(val){ 
     timer=setInterval(function(){ 
     val++; 
     alert(val); 

     if(val==10){ 
      clearInterval(timer); 
      timer=false; 
     } 
    }, 1000); 
} 

<input oninput="input(this.value)">