1

両方に対して選択した値を別の関数に渡そうとしている2つのドロップダウンリストがあります。私のやり方は正しくありませんが、長い間それを見ていたので、おそらく単純な解決策を見つけることができません。

  d3.select("#parameterType").on("change", function() 
    {
        var selectedParameter = this.value;
        console.log(selectedParameter);
        filterData(selectedParameter);
    });


    d3.select("#dateTimeTaken").on("change", function() 
    {   
        var selectedMonth = this.value;
        console.log(selectedMonth);
        filterData(selectedMonth)
    });


    function filterData(selectedParameter,selectedMonth)
    {
        console.log(selectedParameter);
        console.log(selectedMonth);
    }

誰かが私を正しい方向に向けるのを手伝ってもらえますか?

4

3 に答える 3

2

パラメータを渡そうとしている関数で選択した値を取得することをお勧めします。このようなもの:

function filterData()
{
   var selectedParameter = document.getElementById("parameterType").value;
   var selectedMonth = document.getElementById("dateTimeTaken").value;
   console.log(selectedParameter);
   console.log(selectedMonth);
}

選択した値のいずれかが変更されるたびに関数を呼び出します。

d3.select("#parameterType").on("change", function() { filterData(); });

d3.select("#dateTimeTaken").on("change", function() { filterData(); });
于 2013-03-02T16:43:09.323 に答える
1

このアプローチを試してください:

関数の内外を追跡selectedParameterします。selectedMonthハンドラーで、適切な変数を設定してから、引数なしで関数をonchange呼び出します。filterData次にfilterData、両方の変数が設定されているかどうかを確認し、設定されている場合は、それらを使用して何かを実行します。

コード:

var filterData = (function () {
    var selectedParameter, selectedMonth;
    d3.select("#parameterType").on("change", function() 
    {
        selectedParameter = this.value;
        filterData();
    });

    d3.select("#dateTimeTaken").on("change", function() 
    {   
        selectedMonth = this.value;
        filterData();
    });

    function filterData()
    {
        if (selectedParameter === undefined || selectedMonth === undefined) {
            console.log("Both variables not set yet.");
            return;
        }
        console.log("Both variables are set!");
    }
    return filterData;
})();

変数がグローバルスコープにリークしないようにクロージャでラップし、クロージャがfilterData関数を返すようにして、クロージャの外部で呼び出すことができるようにしました。

于 2013-03-02T16:39:10.490 に答える
0

var selectedParameter = this.value;を変更して、グローバル変数を作成します。selectedParameter = this.value; 変数なし

于 2013-03-02T16:38:22.363 に答える