[英]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
變量,因為它是一個閉包 -該函數在創建時可以訪問父作用域。
實際上,您確實是在立即調用hideSelection(dog)
並將其結果傳遞給simpleButton
您需要傳遞對函數的引用 。 最簡單的方法是將其包裝在另一個函數中:
simpleButton("\\images\\dog", 100, 100, "dog", function() {
hideSelection(dog)
});
(PS您可能也想在圖像路徑中轉義\\
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.