【发布时间】:2021-08-17 19:03:20
【问题描述】:
这是一个奇怪的情况,当 D3 的 datum() 函数没有参数时,它是一个 get 函数,破坏了绑定到元素的值。
JS斌链接:
https://jsbin.com/jokarapovi/edit?html,js,console
HTML:
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/6.7.0/d3.min.js"></script>
</head>
<body>
<svg id="s">
<g id="g"></g>
</svg>
</body>
</html>
JavaScript:
var log = console.log;
d3.select("#s").datum(1);
d3.select("#g").datum(2);
var s = d3.select("#s");
var g = d3.select("#g");
log("svg datum:",s.datum());
log("g datum:",g.datum());
// This line is a 'get' but it spoils the value
var temp = s.select("#g").datum();
// Wrong value:
log("g datum:",d3.select("#g").datum());
这是被破坏的输出:
"svg datum:" 1
"g datum:" 2
"g datum:" 1
为什么 get 函数(没有参数的 D3 datum())会破坏绑定到元素的值?
【问题讨论】:
标签: javascript svg d3.js binding