簡體   English   中英

如何從具有參數的另一個函數中調用帶有參數的函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM