有两个下拉列表,我试图将两者的选定值传递给另一个函数。知道我这样做的方式是不正确的,但是看了很久都看不出可能是简单的解决方案。
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);
}
任何人都可以帮我指出正确的方向吗?
答案 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)
尝试这种方法:
跟踪功能之外的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
函数,因此它可以在闭包之外调用。
答案 2 :(得分:0)
通过更改var selected参数= this.value来创建一个全局变量;刚刚选择参数= this.value;没有变种