d3js:如何将按钮id传递给onclick回调函数

时间:2017-09-29 06:43:42

标签: javascript d3.js callback

我知道回调函数可以访问绑定数据及其索引,但是如何将其他参数传递给回调函数?

这是我想要做的简化版本:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
</head>

<script src="https://d3js.org/d3.v4.min.js"></script>

<body>
    <div id="viz">
        <button id="one"> One </button>
        <button id="two"> Two </button>
        <button id="three"> Three </button>
    </div>
</body>

<script>
    // setup buttons
    d3.select("#one").on("click", clickPrint("one"));
    d3.select("#two").on("click", clickPrint("two"));
    d3.select("#three").on("click", clickPrint("three"));

    // callback function
    function clickPrint(arg) {
        console.log("You clicked on button:" + arg);
    }
</script>
</html>

基本上,我希望所有按钮都可以访问相同的回调函数,但是对于该函数来说,知道哪个按钮调用了它。我知道通常回调函数不会有parens,即d3.select("#one").on("click", clickPrint);,但这是我尝试传递一个特定于按钮的参数。我知道我没有任何数据限制(我在实际工作中做了) - 如果这有某种关联,请告诉我。

谢谢。

1 个答案:

答案 0 :(得分:1)

如果你需要知道点击了哪个按钮,你可以从这个按钮中找到id,希望这就是你需要的......

&#13;
&#13;
    // setup buttons
    d3.select("#one").on("click", clickPrint);
    d3.select("#two").on("click", clickPrint);
    d3.select("#three").on("click", clickPrint);

    // callback function
    function clickPrint() {
        console.log( this.id );
    }
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

    <div id="viz">
        <button id="one"> One </button>
        <button id="two"> Two </button>
        <button id="three"> Three </button>
    </div>
&#13;
&#13;
&#13;