使用 d3 数据属性将内部 HTML 设置为 img link
using d3 data properties to set inner HTML to an img link
我希望能够在我正在构建的 Web 应用程序中将 img src 传递到内部 html。
这是我的数据中一项的示例:
{"ArtistImage": "https://photos.bandsintown.com/thumb/8697643.jpeg", "Address": "7000 Coliseum Wy, Oakland, CA 94621", "Artist": "Shawn Mendes"}
html 我正在尝试插入图片:
<li>
<a id="test" href="#">Image</a>
</li>
并且 javascript 根据我悬停在哪个数据点上动态更改内部 html。
d3.selectAll(".events")
.on("mouseover", function(d) {
document.getElementById("test").innerHTML = "<img src=\"d.ArtistImage\" width=\"400px\" height=\"150px\">";
})
但是它正在读取 404 错误,找不到图像。如何让 javascript 的这一点将 d.ArtistImage 中的 link 作为字符串传递给内部 HTML?提前致谢!
当你这样做时...
"<img src=\"d.ArtistImage\" width=\"400px\" height=\"150px\">"
...您是说该图像的 src
字面意思是 d.ArtistImage
,这显然是不正确的。
您可以使用模板文字轻松完成。或者简单地连接字符串:
"<img src='" + d.ArtistImage + "' width='400px' height='150px'>"
最后,您不需要在 D3 代码中使用 document.getElementById
。有人可能会争辩说 document.getElementById
比 D3 选择(内部使用 document.querySelector
)更快,但差异并不显着,更重要的是,这不是惯用的。只需使用带有 html
的 D3 选择,它在内部使用 innerHTML
:
d3.selectAll(".events").on("mouseover", function(d) {
d3.select("#test").html("<img src='" + d.ArtistImage + "' width='400px' height='150px'>");
})
我希望能够在我正在构建的 Web 应用程序中将 img src 传递到内部 html。
这是我的数据中一项的示例:
{"ArtistImage": "https://photos.bandsintown.com/thumb/8697643.jpeg", "Address": "7000 Coliseum Wy, Oakland, CA 94621", "Artist": "Shawn Mendes"}
html 我正在尝试插入图片:
<li>
<a id="test" href="#">Image</a>
</li>
并且 javascript 根据我悬停在哪个数据点上动态更改内部 html。
d3.selectAll(".events")
.on("mouseover", function(d) {
document.getElementById("test").innerHTML = "<img src=\"d.ArtistImage\" width=\"400px\" height=\"150px\">";
})
但是它正在读取 404 错误,找不到图像。如何让 javascript 的这一点将 d.ArtistImage 中的 link 作为字符串传递给内部 HTML?提前致谢!
当你这样做时...
"<img src=\"d.ArtistImage\" width=\"400px\" height=\"150px\">"
...您是说该图像的 src
字面意思是 d.ArtistImage
,这显然是不正确的。
您可以使用模板文字轻松完成。或者简单地连接字符串:
"<img src='" + d.ArtistImage + "' width='400px' height='150px'>"
最后,您不需要在 D3 代码中使用 document.getElementById
。有人可能会争辩说 document.getElementById
比 D3 选择(内部使用 document.querySelector
)更快,但差异并不显着,更重要的是,这不是惯用的。只需使用带有 html
的 D3 选择,它在内部使用 innerHTML
:
d3.selectAll(".events").on("mouseover", function(d) {
d3.select("#test").html("<img src='" + d.ArtistImage + "' width='400px' height='150px'>");
})