改变' onchange'选择

时间:2016-10-06 03:15:39

标签: javascript html

我有一个带有onchange的选择框:

<select id="select" onchange="eventA();">

我想改变&#34; onchange&#34;到其他东西,例如到eventB();。

我已根据这篇文章尝试了这个:How to add an onchange event to a select box via javascript?

document.getElementById("select").onchange="eventB()";

然而,没有任何反应,onchange不会改变。

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

您好,您应该尝试使用此代码。

<html>
  <head>
  <title> Script </title>
  <script type='text/javascript'>
    function changeFirst(){
      alert('I am first');
    }
    
    function changeSecond(){
      alert('I am second');
    }
    
    function changer(){
      document.getElementById('selectinput').attributes.onchange.nodeValue = "changeSecond()";
    }
  </script>
  </head>
  <body onload="changer()">
    <select id="selectinput" onchange="changeFirst()">
      <option value="1"> One </option>
      <option value="2"> two </option>
      <option value="3"> three </option>
      <option value="4"> four </option>
      <option value="5"> five </option>
    </select>
  </body>
</html>

使用jquery而不是纯粹的javascript有点容易。但是使用javascript,您无法更改任何属性,如value或innerHTML。 document.getElementById('ELEMENT_ID')将返回html标记而不是对象。您可以使用document.getElementById('ELEMENT_ID')。value ='your_value'来更改值,但更改任何事件属性都不是这样做的。 document.getElementById('ELEMENT_ID')。属性将返回元素的所有已使用属性,您可以使用nodeValue更改它的值,如我在示例中所示。

根据您的需要再做一次澄清,如果您在选择框更改事件中编写此代码,而不是每次调用第一个事件时,例如如果我将changer()函数代码写入changeFirst()函数而不是selectbox的更改事件将在第一次触发changeFirst()并从下一次触发changeSecond()事件。所以我建议你使用jquery change事件而不是使用纯javascript来防止这种混淆。

答案 1 :(得分:2)

ILE,你能试试这段代码吗?

document.getElementById('select').setAttribute('onchange','eventB();');

答案 2 :(得分:1)

答案在评论中。对于您的代码:

document.getElementById("select").onchange="eventB()";

你不应该将属性设置为字符串,你应该分配一个函数引用,所以:

document.getElementById("select").onchange = eventB;

分配字符串可能适用于某些浏览器,但所有浏览器都支持分配功能。

您可能会发现MDN onchange article很有帮助,它也有相关标准的链接。

答案 3 :(得分:0)

我会为你的班级使用经典的香草javascript事件监听器。像:

var select = document.getElementById("select");
select.addEventListener("change", function(){
    eventB();
});

或者:

var select = document.getElementById("select");
select.addEventListener("change", eventB);