我试图从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