2010-05-24 1 views
0

Я создаю элемент управления деревом, и я пытаюсь использовать родительский элемент в качестве шаблона для своих детей. Для этого я использую метод 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, и почему я вижу тот же результат во всех трех основных браузерах?

+0

Я не могу дублировать вашу проблему. Когда я использую 'node.cloneNode (true)', он копирует все. Работает на FF, Chrome и IE8. – Robusto

ответ

0

Я пробовал, и он отлично работает. Я замечаю, что вы говорите, что текст изменился, чтобы сказать: «Это здорово», который даже не был в оригинале. Извините, но я не покупаю это.

+0

Моя ошибка. «Тейлор Свифт - это болото, которое действительно здорово». действительно является описанием. Я переписал его из окна DOM и сделал ошибку. Исправлена. – user149327

+0

Прохладный. Хорошо, иначе я попробовал это с вашим точным html, и он работал, как ожидалось. Может, здесь что-то еще происходит? – rob