我有一个带有值的javascript函数。该值从下拉列表开始。我无法将值传递给函数,并想知道我做错了什么。任何帮助将不胜感激。
JS功能
Puma.selectEvent = function(year) {
var year = year;
select the event
}
下拉列表更改的事件。 sYear,sMonth和sSeason是下拉名单。 “彪马”并不重要。
onChange=Puma.selectEvent(sYear.value);
答案 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);
};