我試圖從javascript創建一個選擇輸入,並將一個函數綁定到用戶更改選項時。到目前爲止,我有:javascript選擇輸入事件
filter.change = function() {
console.log("CHANGED");
}
但選擇別的東西時沒有任何反應。這段代碼有什麼問題。另外,我怎樣才能在函數中獲得新的選定值?喜歡的東西:
console.log(this.value + "has been selected")
我試圖從javascript創建一個選擇輸入,並將一個函數綁定到用戶更改選項時。到目前爲止,我有:javascript選擇輸入事件
filter.change = function() {
console.log("CHANGED");
}
但選擇別的東西時沒有任何反應。這段代碼有什麼問題。另外,我怎樣才能在函數中獲得新的選定值?喜歡的東西:
console.log(this.value + "has been selected")
你接近,你需要使用onchange
:
filter.onchange = function() {
alert("CHANGED");
//You can alert the value of the selected option, using this:
alert(this.value + " was selected");
}
當然作爲桑德蘭說,你應該addEventListener
(和attachEvent
)只要有可能。例如:
//Define a onchange handler:
var changeHandler = function() {
alert("CHANGED");
//You can alert the value of the selected option, using this:
alert(this.value + " was selected");
}
//First try using addEventListener, the standard method to add a event listener:
if(filter.addEventListener)
filter.addEventListener("change", changeHandler, false);
//If it doesn't exist, try attachEvent, the IE way:
else if(filter.attachEvent)
filter.attachEvent("onchange", changeHandler);
//Just use onchange if neither exist
else
filter.onchange = changeHandler;
如果你用這種方式,屬性名是onchange
:
filter.onchange = function() {
alert(this.value + "has been selected");
};
更多信息:
注意:還有一種註冊事件處理程序的方法,它允許爲同一事件分配多個事件處理程序。欲瞭解更多信息,請看quirksmode.org - Advanced event registration models。
當然,一個應在可用的地方使用'addEventListener'。 –
爲什麼使用addEventListener? http://stackoverflow.com/questions/6929528/javascript-difference-event-handlers-listener –
@Delan:我會說這取決於。如果你確定創建一個庫。如果您將它用於您自己的網站並且不使用任何其他庫,則這種方式對於所有瀏覽器差異而言都更容易。 –
,如果你會使用jQuery,你可以使用它像這樣
$('select').change(function(){
alert($('select').val() + ' was just selected');
});
或使用.onchange
filter.onchange = function() {
alert(this.value + " was selected");
}
代替.change
這是正確的,但完全沒有必要。 –
當然,應該在可用的地方使用'addEventListener'。 –
addEventListener在IE中工作嗎?你能解釋一下爲什麼addEventListener更好,如果瀏覽器支持較少? – SMKS