0

以下功能应该在我的网页的“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 不应该大写,但是当我这样做时,我得到一个错误说“未实现”

预先感谢您的帮助。

4

3 回答 3

2

那是因为你在调用它。您想要的是创建一个在调用调用 alert 的函数:

  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 回答