gpt4 book ai didi

d3.js - 为什么我在 d3js 中以编程方式执行复选框更改事件时未触发

转载 作者:行者123 更新时间:2023-12-04 14:57:11 24 4
gpt4 key购买 nike

所以我有一个改变复选框的功能

somefunction() {
d3.select("input").property("checked", true);
}

在另一个函数中,我检测到复选框中的变化,如下所示:
d3.selectAll("input").on("change", change);

我遇到的问题是,当它在没有我点击的情况下更改复选框时,它不会将其检测为“正确”更改。我该怎么做才能使它检测到其他将其更改为“适当”更改的内容?

最佳答案

d3正在使用标准 addEventListener在它的 on方法。您遇到的问题是更改了选中的属性 doesn't raise any eventsaddEventListener听到。正确的方法是在设置属性后自己调用处理程序:

var myInput = d3.select("input");
myInput.property("checked", true);
myInput.on("change")(); // call it yourself

完整的工作代码:

<!DOCTYPE html>
<html>

<head>
<script data-require="d3@3.5.3" data-semver="3.5.3" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.js"></script>
</head>

<body>
<input type="checkbox" />
<script>

var checked = false;
setInterval(function(){
checked = !checked;
var myInput = d3.select("input");
myInput.property("checked", checked);
myInput.on("change")();
}, 2000);


d3.select("input").on("change", function(d){
console.log('checkbox changed');
});

</script>
</body>

</html>

关于d3.js - 为什么我在 d3js 中以编程方式执行复选框更改事件时未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32610092/

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