AppendChild в IE6/IE7 не работает с существующими элементами.

StackOverflow https://stackoverflow.com/questions/1232410

Вопрос

У меня есть элемент div, который нужно переместить из одного места в другое в DOM.Итак, на данный момент я делаю это так:

flex.utils.get('oPopup_About').appendChild(flex.utils.get('oUpdater_About'));

Но IE, будучи, ну, IE, не работает.Он работает во всех других браузерах, но не в IE.

Мне нужно сделать это так, как элемент (div) 'oUpdater_About' необходимо использовать повторно, поскольку он заполняется снова и снова.

Так что мне просто нужно иметь возможность перемещать div по DOM, AppendChild позволит этому случиться во всех браузерах, но IE.

Заранее спасибо!

Это было полезно?

Решение

Вы должны сначала удалить узел, прежде чем сможете добавить его где-либо еще. Один узел не может быть в двух местах одновременно.

var node = flex.utils.get('oUpdater_About')
node.parentNode.removeChild(node);
flex.utils.get('oPopup_About').appendChild(node);

Другие советы

обязательно клонируйте oUpdater_About (с помощью node.cloneNode (true)) Таким образом, вы получаете копию и можете использовать dom-сниппет так часто, как хотите (в любом браузере).

Этот пост склонен предполагать, что действительно существует проблема с AppendChild:

http://metadeveloper.blogspot.com/2007/01/ie-7-appendchild-bug.html

Вы пытались клонировать его, удалить, а затем вставить вместо него клон?

Джеймс

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top