2012-07-25 87 views
0

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

JS功能

Puma.selectEvent = function(year) { 

     var year = year; 
     select the event 
} 

事件的下拉列表的变化。 sYear,sMonth和sSeason是下拉列表名称。 “彪马”并不重要。

onChange=Puma.selectEvent(sYear.value); 
+0

请给我们完整的代码 - 到平变化你添加的功能? – Bergi 2012-07-25 17:10:05

+1

你已经验证过,直接访问'sYear',而不是通过名字或ID获取,正在为你工作?或者您已经检索了DOM元素? – 2012-07-25 17:10:29

+0

对不起,我放了太多变数。它是sYear下拉列表的转换。我试过getElementId,但那也没有效果。 – MasterP 2012-07-25 17:14:15

回答

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这样的操作。

+0

所以我怎样才能将值从下拉列表传递给没有参数的函数呢?这些功能位于两个不同的文件中。 – MasterP 2012-07-25 17:19:48

+0

我有点不清楚:你绑定onChange的元素是什么? – machineghost 2012-07-25 17:21:23

+0

sYear下拉列表 – MasterP 2012-07-25 17:22:59

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); 
};