La proprietà parentNode
di un elemento fornisce il nodo principale. Gli elementi hanno una funzione insertBefore
che inserisce un elemento prima di un altro elemento di riferimento (spostandolo se è già altrove nell'albero). E i nodi hanno un previousSibling
che ti dà il precedente nodo fratello (che può essere o non essere un elemento). Quindi:
function swapDiv(elm) {
var previous = findPrevious(elm);
if (previous) {
elm.parentNode.insertBefore(elm, previous);
}
}
... dove findPrevious
assomiglia a questo:
function findPrevious(elm) {
do {
elm = elm.previousSibling;
} while (elm && elm.nodeType != 1);
return elm;
}
... dove i vostri onclick
attributi dovrebbe essere:
onclick="swapDiv(this);"
... anche se si consiglia di guardare invece all'aggancio di eventi DOM2 (addEventListener
o attachEvent
su IE).
Un po 'OT, ma posso consiglia di utilizzare una qualsiasi delle varie librerie disponibili che rendono la vita più facile, come ad esempio Prototype, jQuery, Closure o any of several others. In effetti, c'era un errore in una versione precedente di questo perché era che da tempo mi occupavo del DOM direttamente. :-)
fonte
2010-05-31 11:25:17
E se si fa clic su div 1? –
se div è 1 quindi non si scambia ... –
scambia solo il contenuto o l'intero elemento? – karim79