javascript参数传递

时间:2012-07-25 17:06:04

标签: javascript

我有一个带有值的javascript函数。该值从下拉列表开始。我无法将值传递给函数,并想知道我做错了什么。任何帮助将不胜感激。

JS功能

Puma.selectEvent = function(year) {

        var year = year;
        select the event
}

下拉列表更改的事件。 sYear,sMonth和sSeason是下拉名单。 “彪马”并不重要。

onChange=Puma.selectEvent(sYear.value);

2 个答案:

答案 0 :(得分:1)

看起来你误解了事件连接是如何工作的。让我们从这一行开始

onChange=Puma.selectEvent(sYear.value);

你可能认为将Puma.selectEvent处理程序绑定到onChange事件......但你错了。如果你想这样做,你会写:

onChange=Puma.selectEvent;

即。你将onChange设置为“selectEvent”函数本身。你正在做的是将onChange设置为输出对selectEvent的调用;换句话说,selectEvent返回什么。

其次,我们来看看这一行:

Puma.selectEvent = function(year) {

您可能会认为这会导致您将年份(从选择中)传入您的函数,但您会被误解。所有事件处理程序都会传递一个事件对象(通常称为“e”)。现在,该事件具有可用于获取select值的属性(如target和currentTarget),但您需要执行类似e.target.value的操作。

答案 1 :(得分:0)

您发布的代码存在一些问题:

Puma.selectEvent = function (year) {
    // year is a parameter, you should not overwrite it
    var year = year; // get rid of this line
    select the event
}

// this line is EXECUTING Puma.selectEvent(sYear.value)
// and assigning it's return value to the onchange property
onChange=Puma.selectEvent(sYear.value); 

你可能想要这样做:

onChange = function () {
    return Puma.selectEvent(sYear.value);
};