2014-03-19 27 views
1

有人能告訴我爲什麼這不起作用嗎?Javascript onChange for Form選擇字段

<!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

這是因爲onchange事件處理程序分配的方法調用,以提醒的返回值。這最終不確定,但是,調用alert會將消息發送到屏幕。相反,你應該使用函數來分配給事件處理程序

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

第一:「的onChange」 - >「的onchange」

接下來,包裹警報功能的包裝,否則將只是只要它是在代碼中遇到執行。

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

A jsFiddle for you

0

爲什麼不執行該功能時,居然有在選擇元素的變化?

<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"); 
} 
+0

謝謝,我想保持從我的HTML單獨的Javascript。 – jligda

+0

然後簡單地寫在一個單獨的.js文件:) –