d3.js:如何遍历备份 DOM

发布于 2024-12-08 20:03:23 字数 1121 浏览 0 评论 0原文

我不太确定 javascript、DOM 或 d3.js 的哪个方面暴露了我对知识的缺乏:只是知道我很抱歉提出如下这样的基本问题。我是新来的。

我有一个像这样的 json:

[{"link":"a", "count": 3}, {"link":"b", "count": 4}, {"link":"c", "count": 2}]

我想制作一些看起来像

<ul>
    <li> <a>a</a> (3)</li>
    <li> <a>b</a> (4)</li>
    <li> <a>c</a> (2)</li>
</ul>

使用 d3.js 的东西(为了解决显而易见的问题:我想用 d3 做更多事情,这只是捕获了我遇到的问题)。

在我的 html 中弹出

    标记后,在 d3.json 的回调中的某处,我可以编写如下内容:(

d3.select("ul")
    .selectAll("li")
    .data(json)
    .enter()
    .append("li")
    .append("a")
    .text(function(d){return d.link})

尽管这是未经测试的!javascript 怎样做人们测试一小段代码?)。这(可能)会给我

<ul>
    <li><a>a</a></li>
    <li><a>b</a></li>
    <li><a>c</a></li>
</ul>

,但现在我无法摆脱 标签!我无法弄清楚 this 和选择父级的不合时宜的组合,或者我需要做什么才能在列表项标记关闭之前添加额外的信息。我需要做什么?

I'm not quite sure which aspect(s) of javascript, the DOM or d3.js this exposes my lack of knowledge of: just know that I am sorry to be asking such a basic question as the following. I'm new here.

I have a json like this:

[{"link":"a", "count": 3}, {"link":"b", "count": 4}, {"link":"c", "count": 2}]

and I'd like to make something that looks like

<ul>
    <li> <a>a</a> (3)</li>
    <li> <a>b</a> (4)</li>
    <li> <a>c</a> (2)</li>
</ul>

using d3.js (to address the obvious: I want to do a LOT more with d3, this just captures a problem I have).

After popping a <ul> tag in my html, somewhere in a callback from d3.json I can write something like this:

d3.select("ul")
    .selectAll("li")
    .data(json)
    .enter()
    .append("li")
    .append("a")
    .text(function(d){return d.link})

(though this is untested! how do javascript people test little scraps of code?). This will (probably) give me

<ul>
    <li><a>a</a></li>
    <li><a>b</a></li>
    <li><a>c</a></li>
</ul>

but now I can't get out of the <a> tag! I can't figure out what ungodly combination of this and selecting parents or whatnot I need to do to tack on that extra piece of information before the close of the list item tag. What do I need to do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

飘逸的'云 2024-12-15 20:03:24

很简单:不要过度使用方法链接。 :)

var ul = d3.select("ul");

var li = ul.selectAll("li")
    .data(json)
  .enter().append("li");

var a = li.append("a")
    .text(function(d) { return d.link; });

现在您可以向 li 添加其他内容。在这种情况下,由于 D3 只允许您添加元素(而不是原始文本节点),因此您可能需要为括号文本添加一个跨度:

li.append("span")
    .text(function(d) { return " (" + d.count + ")"; });

Simple: don't go overboard with method chaining. :)

var ul = d3.select("ul");

var li = ul.selectAll("li")
    .data(json)
  .enter().append("li");

var a = li.append("a")
    .text(function(d) { return d.link; });

Now you can add other stuff to the li. In this case, since D3 only lets you add elements (rather than raw text nodes), you'll probably want to add a span for the parenthetical text:

li.append("span")
    .text(function(d) { return " (" + d.count + ")"; });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文