Javascript 将匿名函数分配给onchange
我有以下代码:Javascript 将匿名函数分配给onchange,javascript,Javascript,我有以下代码: var select = document.getElementById('test'); select.onchange = (function() { alert(select.options[0].value); })(); 我正在努力使这项工作,但没有运气。我希望这个匿名函数在加载时启动,然后在更改事件上工作。有人能解释一下为什么它不起作用吗 问题在于,您都定义了一个函数,然后立即调用它,并将其结果分配给onchange。只需删除参数即可指定函数: se
var select = document.getElementById('test');
select.onchange = (function() {
alert(select.options[0].value);
})();
我正在努力使这项工作,但没有运气。我希望这个匿名函数在加载时启动,然后在更改事件上工作。有人能解释一下为什么它不起作用吗
问题在于,您都定义了一个函数,然后立即调用它,并将其结果分配给
onchange
。只需删除参数即可指定函数:
select.onchange = function() {
alert(select.options[0].value);
};
如果要立即触发此函数,请将整个表达式包装在parens中,然后调用它:
(select.onchange = function() {
alert(select.options[0].value);
})();
。。。赋值操作的结果是赋值,在本例中,赋值是一个函数。您不能在赋值的同时调用函数。这没有任何意义。首先分配:
var select = document.getElementById('test');
select.onchange = function() {
alert(select.options[0].value);
};
实际上,您是JSFIDLE,这里的示例很好。;-)
然后,如果您想在页面加载时调用它,只需这样做,但在分配它之后
select.onchange();
只需添加这一行:
document.onload = select.onchange();
演示:我认为OP希望通过调用匿名函数在onload上触发
onchange
事件。正如答案中所述,您正在执行该函数,看起来不应该这样做。在某些情况下,IIFE可能很有用,但是您必须返回一个函数引用,使用alert,您可以这样做->要触发onload,请在事件处理程序下面的行中添加select.onchange()