gpt4 book ai didi

javascript - 如何在单击复选框时调用函数,该复选框是单击 d3 元素(如 rect)时弹出的

转载 作者:行者123 更新时间:2023-11-29 17:40:51 25 4
gpt4 key购买 nike

我有一个 d3 元素的矩形,我想单击该矩形,然后应该出现一个弹出窗口,其中将包含复选框。单击该复选框后,应调用一个函数。
截至目前,当我在 html 中调用函数时,不会调用该特定函数

mini.append("g").selectAll("miniItems")
.data(data)
.enter().append("rect")
.attr("id", "rect")
.attr("x", 200)
.attr("y", function(d,i) {return y2(i*1.2)+5;})
.attr("width", windowWidth - 700)
.attr("height", 15)
.attr("stroke", "grey")
.on("click", onClick);/*on click of d3 element this function is invoked*/

function onClick(d){
let content;
content = "<div style='background: white;width:70px; box-shadow:3px 3px 5px #797878;height:30px; padding:8%'><input type='checkbox' id='myCheck' (click)='onClaim(d.executionId)'></input>"+ "claim" + "</div>";
div.html(content)
.style("left", (d3.event.pageX) + "px")
.style("top", (d3.event.pageY) + "px")
.style("display", "block");
}

function onClaim(value){/*this function is not executed*/
console.log(value);
}

enter image description here

我没有得到任何解决方案来调用该函数
任何帮助表示赞赏。预先感谢您:)

最佳答案

为什么不像您已经在使用 d3 那样以 d3 方式添加事件?

onClick函数中,您可以将click事件绑定(bind)到input#myCheck。

div.select('input#myCheck').on('click', function () {
if(this.checked) // checking if the checkbox is checked
onClaim(d.executionId);
});

并且请发布一个工作片段,以便更容易回答(因为您的帖子缺少 divmini 等的定义。无论如何,我使用示例创建了一个片段代码在这里:

var svg = d3.select('svg#chart');
var div = d3.select('div.tooltip');

var data = [{id: 1, executionId: 1}, {id: 2, executionId: 2}];

svg.append("g").selectAll("miniItems")
.data(data)
.enter().append("rect")
.attr("id", "rect")
.attr("x", 100)
.attr("y", function(d,i) {return (i*100);})
.attr("width", 100)
.attr("height", 15)
.style("stroke", "grey")
.on("click", onClick);/*on click of d3 element this function is invoked*/

function onClick(d){
let content;
content = "<div style='background: white;width:70px; box-shadow:3px 3px 5px #797878;height:30px; padding:8%'><input type='checkbox' id='myCheck'/>"+ "claim" + "</div>";
div.html(content)
.style("left", (d3.event.pageX) + "px")
.style("top", (d3.event.pageY) + "px")
.style("display", "block");
div.select('input#myCheck').on('click', function () {
if(this.checked)
onClaim(d.executionId);
})
}

function onClaim(value){/*this function is not executed*/
console.log(value);
}
div.tooltip {
position: absolute;
}
<script src="https://d3js.org/d3.v4.min.js"></script>

<svg id="chart" width="400" height="400"></svg>

<div class="tooltip">

</div>

希望这有帮助。

关于javascript - 如何在单击复选框时调用函数,该复选框是单击 d3 元素(如 rect)时弹出的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53299818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com