Javascript d3选择的ID未定义

Javascript d3选择的ID未定义,javascript,d3.js,Javascript,D3.js,按ID选择元素后,我发现ID未定义 为了说明这一点,我把它们放在一起 设置元素: <pre id='output'></pre> <input id='my-checkbox' type='checkbox'> 这将使用“未定义”填充pre元素,即使单击该框也会持续存在。另一方面,下面的脚本正如我所期望的那样工作: d3.select('#my-checkbox') .on('click', function(){ document.

按ID选择元素后,我发现ID未定义

为了说明这一点,我把它们放在一起

设置元素:

<pre id='output'></pre>
<input id='my-checkbox' type='checkbox'>
这将使用“未定义”填充pre元素,即使单击该框也会持续存在。另一方面,下面的脚本正如我所期望的那样工作:

d3.select('#my-checkbox')
    .on('click', function(){
        document.getElementById('output').outerHTML = this.id;
    });

这是怎么回事?如何在d3的
调用
函数中访问元素ID?

您将获得元素对象作为第一个参数:

d3.select('#my-checkbox').call(function(s){
    document.getElementById('output').outerHTML = s.attr('id');
});

您将获得元素对象作为第一个参数:

d3.select('#my-checkbox').call(function(s){
    document.getElementById('output').outerHTML = s.attr('id');
});

从d3文档中

与function.call类似,调用指定类型的每个已注册回调,将指定参数传递给回调,并将其作为此上下文。有关更多信息,请参阅dispatch.apply

您要查找的函数是
每个

.each(function(){
    document.getElementById('output').outerHTML = this.id;
})

从d3文档中

与function.call类似,调用指定类型的每个已注册回调,将指定参数传递给回调,并将其作为此上下文。有关更多信息,请参阅dispatch.apply

您要查找的函数是
每个

.each(function(){
    document.getElementById('output').outerHTML = this.id;
})

您的javascript代码是否位于页面底部?请查看我链接到的小提琴。JS是在我的元素被定义之后出现的。你的javascript代码在页面底部吗?看看我链接到的小提琴。JS是在我的元素被定义之后。非常好,谢谢。你知道为什么当
这个.id
不起作用时,
调用
会起作用吗?我不知道为什么在这种情况下d3会将元素作为参数传递。我知道这有点混乱,因为
on
将元素作为上下文传递。可能这件事的背景是其他的?很好,谢谢。你知道为什么当
这个.id
不起作用时,
调用
会起作用吗?我不知道为什么在这种情况下d3会将元素作为参数传递。我知道这有点混乱,因为
on
将元素作为上下文传递。这件事的背景可能是别的?