Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将匿名函数分配给onchange_Javascript - Fatal编程技术网

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()