JavaScript中的Onmousedown不工作--help!

时间:2010-01-28 02:44:57

标签: javascript for-loop event-handling onmousedown

以下函数应该在我的网页的“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循环都会发出警报吗?我希望只有当用户在我的列表中的一个短语上按下鼠标时才会发生这种情况。

有人说onmousedown不应该大写,但是当我这样做时,我得到一个错误,说“没有实现”

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

那是因为你在叫它。你想要的是创建一个函数,当调用时调用警告

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

答案 1 :(得分:2)

您将onMouseDown事件设置为alert(“Hello World”)的结果,而不是函数。将其更改为类似的内容,以防止它运行,直到您打算运行它:

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

这使得一个函数将alert作为函数体,并将该函数设置为onMouseDown事件的回调。

答案 2 :(得分:1)

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

应该是

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

否则它返回alert的值作为处理程序(undefined并且什么都不做)。