Приколы IE: клонировнаие и перестановка нодов.1. Есть xml-документ, в котором есть ннод по имени item. К документу применяется xslt и результат выводится в броузер(document.write(xmldoc.transformNode(xsldoc));). Затем мы клонируем этот нод, заново прменяем тот же xsl и выводим в броузер. Прикол в том, что IE6 по непонятной прихоти обзывает клонированный нод не <item>...</item>, а <:item>...</:item>. При этом xsl-преобразования, применяющиеся к исходному <item> естественно не работают для его клона <:item>. Забил на cloneNode() и написал свой для данного случая.
2. Писал 2 функции moveUp(id) и moveDown(id), которые перемещают item вверх и вниз в списке рядом стоящих братьев. Т.е., например, было: <block> <item id="1"/> <item id="2"/> <item id="3"/> </block>
После вызова moveUp("2") должно стать:
<block> <item id="2"/> <item id="1"/> <item id="3"/> </block>
Вот эти ф-ии:
function moveUp(id) { .var myNode=xmldoc.selectSingleNode("descendant-or-self::*[@ID=\'" + id + "\']" ) ;.//находим нод по id .myNode.parentNode.insertBefore(myNode,myNode.previousSibling); //ставим перед предыдущим }
function moveDown(id) { .var myNode=xmldoc.selectSingleNode("descendant-or-self::*[@ID=\'" + id + "\']" ); //находим нод по id .myNode.parentNode.insertBefore(myNode,myNode.nextSibling.nextSibling); //ставим после следующего за следующим }
IMHO, это самый лобовой и логичный способ, который должен работать. В результате ф-ии иногда работают правильно, а иногда нет. Свойства previuosSibling и nextSibling у перемещаемого нода почему-то не обновляются после вызова insertBefore...
ВАШИ МЫСЛИ ПО ТЕМЕ? Thanks in advance... |