将匿名函数分配给onchange

时间:2014-03-30 10:55:36

标签: javascript

我有以下代码:

var select = document.getElementById('test');

select.onchange = (function() {   
    alert(select.options[0].value);
})();

我正在尝试做这项工作,但没有运气。我希望这个匿名函数在加载时触发,然后应该对change事件起作用。谁能解释一下为什么它不起作用?

http://jsfiddle.net/Lnybn/2/

3 个答案:

答案 0 :(得分:1)

问题是你们都定义了一个函数并在之后立即调用它,将结果分配给onchange。只需删除parens来指定一个函数:

select.onchange = function() {   
    alert(select.options[0].value);
};

如果你想立即触发这个函数,将整个表达式包装在parens中,然后调用它:

(select.onchange = function() {   
    alert(select.options[0].value);
})();

...由于赋值操作的结果是赋值,在这种情况下,它是一个函数。

答案 1 :(得分:1)

只需添加以下行:

document.onload = select.onchange();

演示:http://jsfiddle.net/Lnybn/4/

答案 2 :(得分:0)

您无法分配该功能并同时调用该功能。它没有任何意义。首先分配它:

var select = document.getElementById('test');

select.onchange = function() {   
    alert(select.options[0].value);
};

其实你在JSFiddle的例子很好。 ; - )

然后,如果你想在页面加载时调用它,只需执行它,但在分配之后;

select.onchange();