0

次の関数は、私のWebページの「onload」イベント中に実行されることになっています。

function setUpTranslation() {
   var phrases = document.getElementsByTagName("p");

   for (i = 0; i<phrases.length; i++) {
      phrases[i].number = i;
      phrases[i].childNodes[1].innerHTML = french[i];

      phrases[i].childNodes[1].onMouseDown = alert("Hello World");
  }
}

Forループを介して毎回アラートが発生する理由を誰かに教えてもらえますか?これは、ユーザーがリスト内のフレーズの1つをマウスで押したときにのみ発生することを期待しています。

誰かがonmousedownを大文字にすべきではないと言いましたが、そうすると「実装されていません」というエラーが表示されます

よろしくお願いします。

4

3 に答える 3

2

それはあなたがそれを呼んでいるからです。必要なのは、呼び出されたときにアラートを呼び出す関数を作成することです。

  phrases[i].childNodes[1].onMouseDown = function() {alert("Hello World");};
于 2010-01-28T02:46:48.020 に答える
2

onMouseDownイベントを、関数ではなく、alert( "Hello World")の結果に設定しています。実行する予定になるまで実行されないようにするには、次のように変更します。

phrases[i].childNodes[1].onMouseDown = function() { alert("Hello World"); };

これにより、アラートを関数の本体として持つ関数が作成され、その関数がonMouseDownイベントのコールバックとして設定されます。

于 2010-01-28T02:47:52.900 に答える
1
phrases[i].childNodes[1].onMouseDown = alert("Hello World");

する必要があります

phrases[i].childNodes[1].onMouseDown = function( ){ alert("Hello World"); };

alertそれ以外の場合は、ハンドラーとしての値を返します(これはundefined何もしません)。

于 2010-01-28T02:47:13.633 に答える