Thuộc tính parentNode
của phần tử cung cấp cho bạn nút cha của nó. Các phần tử có hàm insertBefore
chèn phần tử trước phần tử tham chiếu khác (di chuyển nó nếu nó đã ở nơi khác trong cây). Và các nút có một số previousSibling
cung cấp cho bạn nút anh chị em trước đó (có thể hoặc không thể là một phần tử). Vì vậy:
function swapDiv(elm) {
var previous = findPrevious(elm);
if (previous) {
elm.parentNode.insertBefore(elm, previous);
}
}
... nơi findPrevious
trông như thế này:
function findPrevious(elm) {
do {
elm = elm.previousSibling;
} while (elm && elm.nodeType != 1);
return elm;
}
... nơi onclick
thuộc tính của bạn nên là:
onclick="swapDiv(this);"
... mặc dù bạn có thể muốn thay vào đó hãy tìm kiếm sự kiện DOM2 (addEventListener
hoặc attachEvent
trên IE).
Hơi cũ, nhưng tôi có thể khuyên bạn sử dụng bất kỳ thư viện nào có sẵn giúp cuộc sống của bạn dễ dàng hơn, chẳng hạn như Prototype, jQuery, Closure hoặc any of several others. Trên thực tế, đã xảy ra lỗi trong phiên bản cũ hơn bởi vì nó đã là rằng lâu kể từ khi tôi xử lý trực tiếp DOM. :-)
Nguồn
2010-05-31 11:25:17
Và nếu div 1 được nhấp? –
nếu div là 1 thì không hoán đổi ... –
chỉ trao đổi nội dung hoặc toàn bộ phần tử? – karim79