0

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

JS函数

Puma.selectEvent = function(year) {

        var year = year;
        select the event
}

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

onChange=Puma.selectEvent(sYear.value);
4

2 回答 2

1

您似乎误解了事件连接的工作方式。让我们从这条线开始

onChange=Puma.selectEvent(sYear.value);

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

onChange=Puma.selectEvent;

IE。您将 onChange 设置为“selectEvent”函数本身。您所做的是将 onChange 设置为调用 selectEvent的输出;换句话说, selectEvent 返回的内容。

其次,让我们看一下这一行:

Puma.selectEvent = function(year) {

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

于 2012-07-25T17:17:17.537 回答
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);
};
于 2012-07-25T17:37:09.367 回答