Я создаю элемент управления деревом, и я пытаюсь использовать родительский элемент в качестве шаблона для своих детей. Для этого я использую метод element.cloneNode (true) для глубокого клонирования родительского элемента. Однако , когда я вставляю клонированный элемент в DOM, отсутствуют некоторые внутренние элементы, несмотря на то, что значение externalHTML идентично его родительскому. Удивительно Я наблюдаю то же поведение в IE, Firefox и Chrome, заставляя меня поверить, что это по дизайну.DOM: элемент, созданный с помощью cloneNode (true) отсутствует элемент при добавлении в DOM
Это HTML для узла, который я пытаюсь клонировать.
<SPAN class=node><A class=nodeLink href="/SparklerRestService2.aspx?q={0}" name=http://dbpedia.org/data/Taylor_Swift.rdf>
<IMG class=nodeIcon alt="Taylor Swift" src="images/node.png"><SPAN class=nodeText>Taylor Swift</SPAN></A><SPAN class=nodeDescription>Taylor Swift is a swell gall who is realy great.</SPAN></SPAN>
После того, как я клонировал узел, используя cloneNode (истинный) я анализирую свойство outerHTML и считаю, что это действительно идентично оригиналу.
<SPAN class=node><A class=nodeLink href="/SparklerRestService2.aspx?q={0}" name=http://dbpedia.org/data/Taylor_Swift.rdf><IMG class=nodeIcon alt="Taylor Swift" src="images/node.png"><SPAN class=nodeText>Taylor Swift</SPAN></A><SPAN class=nodeDescription>Taylor Swift is a swell gall who is realy great.</SPAN></SPAN>
Однако, когда я вставить его в DOM и проверьте результат с помощью FireBug Я считаю, что элемент был преобразован:
<span class="node" style="top: 0px; left: 0px;"<a class=nodeLink href="/SparklerRestService2.aspx?q={0}" name=http://dbpedia.org/data/Taylor_Swift.rdf>Taylor Swift</a><span class="nodeDescription">Taylor Swift is a swell gall who is realy great.</span></span>
Обратите внимание, что внуки узла (тег изображения а тег span, окружающий «Тейлор Свифт»), хотя, как ни странно, текстовый узел великого внука «Тейлор Свифт» превратил его в дерево.
Может ли кто-нибудь пролить свет на это поведение? Почему узлы исчезают после вставки в DOM, и почему я вижу тот же результат во всех трех основных браузерах?
Я не могу дублировать вашу проблему. Когда я использую 'node.cloneNode (true)', он копирует все. Работает на FF, Chrome и IE8. – Robusto