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;

すなわち。onChangeを「selectEvent」関数自体に設定します。あなたが行っていたのは、selectEventの呼び出しの出力にonChangeを設定することでした。つまり、selectEventが返すものです。

次に、この行を見てみましょう。

Puma.selectEvent = function(year) {

その結果、(選択から)年が関数に渡されると思うかもしれませんが、それは間違いです。すべてのイベントハンドラーには、イベントオブジェクト(「e」と呼ばれることが多い)が渡されます。これで、そのイベントには、selectの値を取得するために使用できるプロパティ(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 に答える