いくつかのレガシー JavaScript コードを変更する必要があります。ユーザーが 2 つのボタンのいずれかを押すまで待機してから、プログラム フロー (prompt()
機能など) を続行する場所があります。これはどのように達成できますか?
6 に答える
その時点で関数を中断し、別の関数を追加してユーザーのボタン プレス イベントをキャッチする必要があります。
Narrative Javascriptを使用してブロック動作を導入し、単純化することができます (関数を 2 つの部分に分割する必要はありません) が、このライブラリは 2013 年以降放棄されていることに注意してください。
わかりました、おそらくこの種のことが必要でした。イベントを実装して、Pentium10 の回答からキーにフラグを立てることができます。
たとえば、グローバル変数が true になるまで同じメソッドを呼び出す setTimeout() 関数を設定する waitForIt() という関数を作成できます (ボタン アクションを押すことによって設定されます)。
例えば:
<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() メソッドを直接呼び出すこともできますが、何が起こっているのかを確認できるように作成しました。例がごちゃごちゃしていて申し訳ありませんが、あまり時間がありません:)
- (CSS display:none を使用して) 表示されない可能性のあるコンテンツを非表示にして、ボタンを押したときに表示することができます。
- またはより安全:ボタンが押されたときにサーバー/ AJAXリクエストを実行できます
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>
そのためのタイムアウトとインターバルで遊ぶことはありません。
プログラムを 2 つの部分に分けたほうがよいでしょう。
最初の部分を実行し、ユーザーにアクションを求めるコードを追加します。
そして、アクションに基づいて、2 番目の部分を実行します。