将变量从多个javascript函数传递到另一个函数?

时间:2013-03-02 16:36:24

标签: javascript

有两个下拉列表,我试图将两者的选定值传递给另一个函数。知道我这样做的方式是不正确的,但是看了很久都看不出可能是简单的解决方案。

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

任何人都可以帮我指出正确的方向吗?

3 个答案:

答案 0 :(得分: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(); });

答案 1 :(得分:1)

尝试这种方法:

跟踪功能之外的selectedParameterselectedMonth。在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函数,因此它可以在闭包之外调用。

答案 2 :(得分:0)

通过更改var selected参数= this.value来创建一个全局变量;刚刚选择参数= this.value;没有变种