Свойство parentNode
элемента дает вам его родительский узел. Элементы имеют функцию insertBefore
, которая вставляет элемент перед другим ссылочным элементом (перемещая его, если он уже находится в другом месте дерева). И у узлов есть previousSibling
, который дает вам предыдущий одноуровневый узел (который может быть или не быть элементом). Итак:
function swapDiv(elm) {
var previous = findPrevious(elm);
if (previous) {
elm.parentNode.insertBefore(elm, previous);
}
}
... где findPrevious
выглядит так:
function findPrevious(elm) {
do {
elm = elm.previousSibling;
} while (elm && elm.nodeType != 1);
return elm;
}
... где ваши атрибуты onclick
должны быть:
onclick="swapDiv(this);"
... хотя вы можете вместо этого изучить перехват событий DOM2 (addEventListener
или attachEvent
в IE).
Немного ОТ, но я могу порекомендовать использовать любую из нескольких доступных библиотек, которые облегчат вашу жизнь, например, Прототип , jQuery , Закрытие или любой из нескольких других . На самом деле, в более ранней версии была ошибка, потому что это было , что давно, когда я имел дело с DOM напрямую. : -)