按ID选择元素后,我发现ID未定义。
为了说明这一点,我将this example (fiddle link)
放在一起设置元素:
<pre id='output'></pre>
<input id='my-checkbox' type='checkbox'>
d3脚本:
d3.select('#my-checkbox')
.call(function(){
document.getElementById('output').outerHTML = this.id;
})
.on('click', function(){
document.getElementById('output').outerHTML = this.id;
});
这将使用&#34; undefined&#34;填充pre元素。即使单击该框也会持续存在。另一方面,下面的脚本按照我的预期工作:
d3.select('#my-checkbox')
.on('click', function(){
document.getElementById('output').outerHTML = this.id;
});
这里发生了什么?如何在d3的call
功能中访问元素的ID?
答案 0 :(得分:1)
您将获取元素对象作为第一个参数:
d3.select('#my-checkbox').call(function(s){
document.getElementById('output').outerHTML = s.attr('id');
});
答案 1 :(得分:1)
来自d3文档
与function.call类似,调用指定类型的每个已注册的回调,将回调传递给指定的参数,并将其作为此上下文。有关更多信息,请参阅dispatch.apply。
您正在寻找的功能是each
.each(function(){
document.getElementById('output').outerHTML = this.id;
})