如何从另一个有参数的函数调用带参数的函数?
How to call a function with parameters from another function that has parameters?
我正在使用 D3 和 JS。
我有一个创建按钮的函数,其中一个参数是 onClick
,它在单击按钮时运行(很明显)。
例如:
simpleButton(imageURL, width, height, title, onClick){
.attr("xlink:href", imageUrl) //-original image
.attr( "width", width) //-icon width
.attr( "height", height) //-icon height
.on("click", onClick)
.append("svg:title")
.text(title); //-give the button a title
}
现在我将使用我的一个按钮来隐藏一些形状(即设置 visibility:hidden
)。
所以我创建了另一个函数来隐藏选择,例如:
hideSelection(selection){
selection.classed("hidden", true);
}
这个函数接受一个参数,这样我就可以传递我想隐藏的东西。
例如,我认为可行的方法如下所示:
simpleButton("\images\dog", 100, 100, "dog", hideSelection(dog));
现在,这确实有效,但无需我点击它就立即有效。我知道这是因为我直接调用 hideSelection
因为括号 -().
但我的问题是,如何在运行时立即停止调用此函数?我如何通过另一个有参数的函数运行一个有参数的函数(如果这有意义的话)?
你应该将它包装在一个匿名函数中:
simpleButton("\images\dog",100,100, "dog", function() {
hideSelection(dog)
});
此函数可以访问 dog
变量,因为它是一个 closure - 一个在创建时可以访问父作用域的函数。
您确实在立即调用 hideSelection(dog)
并将其 结果 传递给 simpleButton
- 您需要传递 reference 到一个函数。最简单的方法是将其包装在另一个函数中:
simpleButton("\images\dog", 100, 100, "dog", function() {
hideSelection(dog)
});
(P.S.You 可能也想转义图像路径中的 \
s)
我正在使用 D3 和 JS。
我有一个创建按钮的函数,其中一个参数是 onClick
,它在单击按钮时运行(很明显)。
例如:
simpleButton(imageURL, width, height, title, onClick){
.attr("xlink:href", imageUrl) //-original image
.attr( "width", width) //-icon width
.attr( "height", height) //-icon height
.on("click", onClick)
.append("svg:title")
.text(title); //-give the button a title
}
现在我将使用我的一个按钮来隐藏一些形状(即设置 visibility:hidden
)。
所以我创建了另一个函数来隐藏选择,例如:
hideSelection(selection){
selection.classed("hidden", true);
}
这个函数接受一个参数,这样我就可以传递我想隐藏的东西。
例如,我认为可行的方法如下所示:
simpleButton("\images\dog", 100, 100, "dog", hideSelection(dog));
现在,这确实有效,但无需我点击它就立即有效。我知道这是因为我直接调用 hideSelection
因为括号 -().
但我的问题是,如何在运行时立即停止调用此函数?我如何通过另一个有参数的函数运行一个有参数的函数(如果这有意义的话)?
你应该将它包装在一个匿名函数中:
simpleButton("\images\dog",100,100, "dog", function() {
hideSelection(dog)
});
此函数可以访问 dog
变量,因为它是一个 closure - 一个在创建时可以访问父作用域的函数。
您确实在立即调用 hideSelection(dog)
并将其 结果 传递给 simpleButton
- 您需要传递 reference 到一个函数。最简单的方法是将其包装在另一个函数中:
simpleButton("\images\dog", 100, 100, "dog", function() {
hideSelection(dog)
});
(P.S.You 可能也想转义图像路径中的 \
s)