1

我正在尝试将更改事件分配给元素。我有

 var testDiv=getElementById('testDiv');

 var SelectMenu=document.createElement('select');
     SelectMenu.id='SelectMenu';
     SelectMenu.onchange=changeFuntion();

     testDiv.appendChild(SelectMenu);

function changeFuntion(){
 //it calls right after I load the page....
 alert('call');

}

html

  <div id='testDiv'></div>

我希望仅在用户更改 dropdonw 菜单时才显示警报。但是,似乎在创建元素后立即调用警报。有小费吗?非常感谢!

4

2 回答 2

2
SelectMenu.onchange=changeFuntion();  <-- This calls the function
                                 ^^--- Remove the braces

应该是

SelectMenu.onchange=changeFuntion  ;  <-- This assigns the function pointer

由于大括号,该函数被立即调用......

于 2012-12-15T01:54:45.683 回答
1

您将函数的返回值分配changeFunctionSelectMenu.onchange,而不是函数本身。尝试...

SelectMenu.onchange = changeFuntion;

反而。你有它的方式,即:

SelectMenu.onchange = changeFuntion();

意思是:调用函数changeFunction,并将返回值赋给SelectMenu.onchange属性。

于 2012-12-15T01:56:17.383 回答