【发布时间】:2019-05-21 09:40:00
【问题描述】:
我在父元素 (myLines) 中包含的 SVG 中有 4 条复杂的折线。我想将折线存储在一个数组中,以便稍后在我的代码中调用它们。由于某种原因,浏览器认为“myLines”父元素内的折线之间存在隐藏的文本节点。当我尝试使用开发人员工具在检查器中查找节点时,浏览器说“某些节点被隐藏”,指的是这些节点。
但是,当我使用 appendChild 并将折线从一个元素移动到另一个元素时,浏览器仅检测到实际存在的 4 条折线。
这是怎么回事?
我想了一些变通办法来避免这个问题,但我宁愿知道 wtf 正在发生,这样我才能真正修复它并了解我做错了什么。
var main = document.querySelector('main');
var lines = main.querySelectorAll('g#myLines');
var element=document.getElementById("myLines2");
var elArray=[];
console.log(lines);
for (z=0; z<4; z++){
console.log("lines[0].childNodes["+z+"]= "+lines[0].childNodes[z]);
elArray[z]=(lines[0].childNodes[z]);
/* element.appendChild(lines[0].childNodes[z]); */
}
请看看这个小提琴。如果您查看控制台并启用此代码“element.appendChild(lines[0].childNodes[z]);”在第 9 行,您可以看到使用 appendChild 没有出现文本节点。 https://jsfiddle.net/NZSIL/8psru5mv/
谢谢!!
【问题讨论】:
-
不确定我是否理解您的问题,但我认为那些隐藏的文本节点是空格、换行符和/或制表符,您可以使用它们来格式化 html 代码以使其更具可读性。当您将元素附加到某些父元素时,这些选项卡、新行和空格不存在,因为这些元素直接在彼此之后附加而没有代码格式。
标签: javascript html svg