我正在使用d3強制導向佈局,其中使用SVG foreignObject
元素實現了HTML節點標籤。我希望在不同的時間選擇這些元素來更新他們的位置和其他屬性(並跟蹤它們的創建和刪除,其中enter()
和exit()
),但我似乎無法像其他SVG元素一樣選擇它們。無法在d3中選擇SVG foreignObject元素
這裏是一個簡潔的例子:
HTML:
<html>
<head>
<title>Cannot Select SVG Foreign Object</title>
<script src="http://d3js.org/d3.v2.js"></script>
<script src = "fo_select.js"></script>
</head>
<body>
<svg id="example_svg" width="600" height="600">
<g>
<circle r="40" cx = "80" cy="80"></circle>
<foreignObject width = "100" height = "100" x = "200" y="200">
<body>Hello, world</body>
</foreignObject>
</g>
</svg>
<script>run()</script>
</body>
</html>
的Javascript:
function run() {
svg = d3.select("#example_svg");
console.log(svg.selectAll("circle"));
console.log(svg.selectAll("foreignObject"));
}
這也是在向上http://bl.ocks.org/3217448。控制檯輸出是:
[Array[1]]
[Array[0]]
其中第一陣列包含circle
元件,而第二個是空的。爲什麼circle
對象可以選擇,但foreignObject
不是?我認爲這與foreignObject
的不同尋常的性質有關。我如何選擇它來在我的代碼中操作它?非常感謝。
(更新刪除額外的逗號錯字) – 2012-07-31 15:45:17