Вот рабочий код: http://jsfiddle.net/ftbaw0ps/1/
Пожалуйста, используйте правильный синтаксис HTML, например:
What is the name of Black Panther's home?
K'un Lun
Wakanda
Kamar Taj
How did Dr Strange defeat Dormammu?
Built An Energy Prison
Create a Time Loop
Froze Time
С другой стороны, @sjdm ответил на ваш вопрос: когда вы используете правильный селектор для ввода, вы должны всегда применять стиль к нему / им.
#choice{
width: 10px;
}
JavaScript не имеет никакой семантики блокировки, потому что JS не является многопоточным языком. Несколько потоков могут только работать одновременно в абсолютно отличных контекстах - например, Рабочие потоки HTML5, или в вещах как несколько экземпляров объекта контекста API JavaScriptCore (я предполагаю, что SpiderMonkey имеет подобное понятие). У них не может быть общего состояния, таким образом, в сущности все выполнение является атомарным.
Хорошо, поскольку Вы теперь предоставили часть своего кода, который я принимаю, у Вас есть что-то сродни:
External Process:
<JSObject>.isRunning = true;
doSomething()
<JSObject>.done()
Или некоторые такой (использование соответствующих API). В этом случае я ожидал бы, что механизм JS заблокируется, если JS выполнится в контексте Вашего объекта js (который является тем, что JavaScriptCore сделал бы), то приводя это к сбою необходимо будет, вероятно, поместить руководство, закрепляют вокруг js выполнения.
, Какой механизм Вы используете, чтобы сделать все это? Я спрашиваю, потому что на основе Вашего описания это кажется на установку флага от вторичного потока с языка non-JS с помощью API C/C++, обеспеченного тем языком, и большинство механизмов JS предполагает, что любое управление состояния, сделанное через API, будет происходить на единственном потоке, обычно тот же поток, на котором происходит все выполнение.
Возможно, Вы могли реализовать основной целочисленный семафор, просто добавить переменную в DOM и блокировать/разблокировать его и удостовериться, что Ваши функции продолжают проверять его, еще тайм-аут их =)
при использовании платформы, такой как Mootools, Вы могли бы попытаться обработать поток приложения с событиями, такими как onComplete и так далее.
У меня была та же проблема, вот то, как я решил ее. Это хорошо работает для двух параллельных процессов. Если у Вас есть три процесса или больше, возможно, что два процесса запускаются вместе.
var isRunning = false;
...
var id = setInterval(function(){ //loop until isRunning becomes false
if (!isRunning){
isRunning = true;
//do something synchronous or use a promise
isRunning = false;
clearInterval(id); // stop the loop here
}
, 10);
Это лучше, чем цикл с условием продолжения, потому что это решает проблемы параллелизма / асинхронные проблемы для чтения/установки isRunning
.