2010-02-08 3 views
2

Мне нужно изменить некоторые старые javascript-коды. Там есть место, где я хочу подождать, пока пользователь нажмет одну из двух кнопок, а затем продолжит поток программы (например, функция prompt()). Как это можно достичь?Как я могу заставить программу ждать нажатия кнопки в javascript?

ответ

3

Вам нужно разбить функцию в этой точке, и добавить еще одну функцию, чтобы поймать кнопку событие нажатия пользователя.

Вы можете использовать Narrative Javascript ввести блокирование поведения и просто (так что вам не нужно, чтобы разбить функцию на две части.)

0
  • Вы можете скрыть содержимое, которое может быть не видно (с помощью CSS-дисплея: нет), и покажите его, когда вы нажимаете кнопку.
  • Или более безопасно: Вы можете сделать запрос сервера/AJAX, когда была нажата кнопка
0

Там нет «сна» или «ждать» оператора в JavaScript. Тем не менее вы можете установить таймер, и когда таймер истечет, он выполнит функцию.

setTimeout("alert('hello')",1250); 

Вы должны использовать события, чтобы пометить ключ:

<script type="text/javascript"> 

document.onkeyup = KeyCheck;  
function KeyCheck() 

{ 

    var KeyID = event.keyCode; 


    switch(KeyID) 

    { 

     case 16: 

     document.Form1.KeyName.value = "Shift"; 

     break; 

     case 17: 

     document.Form1.KeyName.value = "Ctrl"; 

     break; 

     case 18: 

     document.Form1.KeyName.value = "Alt"; 

     break; 

     case 19: 

     document.Form1.KeyName.value = "Pause"; 

     break; 

     case 37: 

     document.Form1.KeyName.value = "Arrow Left"; 

     break; 

     case 38: 

     document.Form1.KeyName.value = "Arrow Up"; 

     break; 

     case 39: 

     document.Form1.KeyName.value = "Arrow Right"; 

     break; 

     case 40: 

     document.Form1.KeyName.value = "Arrow Down"; 

     break; 
    } 

} 
</script> 
+0

К сожалению, это не предусматривает каких-либо «блокировок». Поэтому мне нужно будет каким-то образом изменить код на функции. –

+0

Javascript - это процесс, основанный на событиях. Вы должны использовать события и функции. См. Ниже ответы Гипна. – Pentium10

3

Хорошо, вероятно, вы хотите такого рода вещи, вы можете реализовать события, чтобы отметить ключ от ответа Pentium10:

Вы можете сделать функцию, называемую waitForIt(), в которой вы устанавливаете функцию setTimeout(), которая вызывает тот же метод, пока глобальная переменная не будет истинна (задано нажатием кнопки действие).

Например:

<html> 
<head> 
<script type="text/javascript"> 
var buttonpressed = false; 

function waitForIt() { 
    if (!buttonpressed) { 
    setTimeout(waitForIt,2500); 
    } else { 
document.getElementById('info').value='ok'; 
    } 
} 

function startSomething() { 
document.getElementById('info').value=''; 
waitForIt(); 
document.getElementById('info').value='waiting'; 
} 

function setButtonPressed() { 
buttonpressed = true; 
} 

</script> 
</head> 
<body> 
<br> 
<input type='text' style="width: 200px;" id="info" /> 
<br> 
<input type='button' style="width: 200px;" value="Start" onclick="javascript: startSomething();"> 
<br> 
<br> 
<input type='button' style="width: 200px;" value="Continue" onclick="javascript: setButtonPressed();"> 
</body> 

</html> 

Вы можете вызвать метод waitForIt() непосредственно, но я сделал так, вы можете посмотреть, что происходит. Извините за беспорядок в примере, но у меня мало времени на то, чтобы сэкономить :)

+0

Спасибо ...... Его помощь мне много ............ –

0

Я бы не играл с таймаутами и интервалами для этого.

Вам будет лучше разрезать программу на 2 части, возможно, как вы предлагаете в двух функциях.
Запустите первую часть, добавьте код, чтобы спросить пользователя о действии.

И затем, основываясь на действии, запустите вторую часть.

Смежные вопросы