9

いくつかのレガシー JavaScript コードを変更する必要があります。ユーザーが 2 つのボタンのいずれかを押すまで待機してから、プログラム フロー (prompt()機能など) を続行する場所があります。これはどのように達成できますか?

4

6 に答える 6

4

その時点で関数を中断し、別の関数を追加してユーザーのボタン プレス イベントをキャッチする必要があります。

Narrative Javascriptを使用してブロック動作を導入し、単純化することができます (関数を 2 つの部分に分割する必要はありません) が、このライブラリは 2013 年以降放棄されていることに注意してください。

于 2010-02-08T13:36:06.657 に答える
3

わかりました、おそらくこの種のことが必要でした。イベントを実装して、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() メソッドを直接呼び出すこともできますが、何が起こっているのかを確認できるように作成しました。例がごちゃごちゃしていて申し訳ありませんが、あまり時間がありません:)

于 2010-02-08T13:54:41.730 に答える
0
  • (CSS display:none を使用して) 表示されない可能性のあるコンテンツを非表示にして、ボタンを押したときに表示することができます。
  • またはより安全:ボタンが押されたときにサーバー/ AJAXリクエストを実行できます
于 2010-02-08T13:32:14.937 に答える
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>
于 2010-02-08T13:32:56.630 に答える
0

そのためのタイムアウトとインターバルで遊ぶことはありません。

プログラムを 2 つの部分に分けたほうがよいでしょう。
最初の部分を実行し、ユーザーにアクションを求めるコードを追加します。

そして、アクションに基づいて、2 番目の部分を実行します。

于 2010-02-08T19:47:58.663 に答える