Javascript onChange for Form Select Field

时间:2014-03-19 18:43:55

标签: javascript html html-select

有人能告诉我为什么这不起作用吗?

<!DOCTYPE html>
<html>
<head>
<script>
window.onload = initPage;

function initPage() {
    document.getElementById("member_type_academic_4").onChange=alert("It's Working");
}
</script>
</head>
<body>

<form>
  <label for="member_type_academic_4">test</label>
  <select name="member_type_academic_4" id="member_type_academic_4">
    <option value="0" selected>Select One</option>
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
    <option value="4">Four</option>
  </select>
</form>

</body>
</html>

窗口加载时会触发警告框,但是当选择框发生变化时则不会触发。我知道这很简单,我不知道。谢谢!

3 个答案:

答案 0 :(得分:3)

这是因为为onchange事件处理程序分配了对alert的方法调用的返回值。这最终是未定义的,但是,调用alert会将消息发送到屏幕。相反,您应该使用一个函数来分配给事件处理程序

function initPage() {
 document.getElementById("member_type_academic_4").onchange = function(){
  alert("It's Working");
 };
}

答案 1 :(得分:0)

首先:&#34; onChange&#34; - &GT; &#34;平变化&#34;

接下来,将alert函数包装在一个包装器中,否则只要在代码中遇到它就会立即执行。

document.getElementById("member_type_academic_4").onchange=function(){alert("It's Working")};

A jsFiddle for you

答案 2 :(得分:0)

为什么不在select元素实际发生变化时执行该函数?

<select name="member_type_academic_4" onchange="initPage()"
id="member_type_academic_4">
    <option value="0" selected>Select One</option>
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
    <option value="4">Four</option>
</select>

然后将功能更改为:

function initPage() {
    alert("It's Working");
}