javascript - 尝试在另一个 SVG 元素之前插入 SVG 元素时使用 d3 java 库中的 insert() 函数时出现问题

标签 javascript insert d3.js selector

我在使用 insert() function 时遇到问题d3 可视化库的。更好地说我不明白如何使用“选择器之前”。我红色的例子herehere ,但这没有帮助。

我创建一个 svg 元素并向其附加一个元素。然后我将foreignObject-element附加到该组中,并希望随后在foreignObject-element之前插入一个矩形。

这是我的代码

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

var svg = body.append("svg")
    .attr("width", '100%')
    .attr("height", '100%');

var group = svg.append("svg:g");

var html = group.append("foreignObject")
    .attr("x", 50)
    .attr("y", 25)
    .attr("width", 200)
    .attr("height", 100)
    .append("xhtml:div")
    .style("font", "14px 'Helvetica Neue'")
    .html("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eu enim quam.");

var rect1 = group.insert("svg:rect", html)
    .attr("rx", 6)
    .attr("ry", 6)
    .attr("x", 5/2)
    .attr("y", 5/2)
    .attr("id", "rect")
    .attr("width", 250)
    .attr("height", 120)
    .style("fill", 'white')
    .style("stroke", d3.scale.category20c())
    .style('stroke-width', 5);

这是一个(非)工作 Jsfidle example

最佳答案

编辑:尝试将 id 传递给之前的选择,如下所示:http://jsfiddle.net/GCTuD/3/

var rect1 = group.insert("svg:rect", "#foreign_object")

您不能按元素标签名称进行选择,只能按常量(例如 id)进行选择,如 docs 中指定的那样。 :

The name and before selector must be specified as constants, though in the future we might allow inserting of existing elements or a function to generate the name or selector dynamically.

关于javascript - 尝试在另一个 SVG 元素之前插入 SVG 元素时使用 d3 java 库中的 insert() 函数时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16338098/

相关文章:

javascript - d3.js 中的外部文件未定义 JSON 数据?

javascript - 将 D3.js 与 javascript 对象而不是外部 JSON 文件一起使用

javascript - 如何在D3中监听频繁的SSE?

javascript - 如何将类名添加到 Angular2 指令中

javascript - javascript 模板字符串中的默认值

javascript - jQuery 循环在特定位置暂停

mysql - 为什么我的 `INSERT ... ON DUPLICATE KEY UPDATE` 中有 2 行受到影响?

php - MySql 中的 REPLACE、INSERT、UPDATE 有什么区别?

javascript - 实用的javascript面向对象设计模式示例

Android:批量插入联系人照片