見demo
js代碼
function exchange(el1, el2){
var ep1 = el1.parentNode,
ep2 = el2.parentNode,
index1 = Array.prototype.indexOf.call(ep1.children, el1),
index2 = Array.prototype.indexOf.call(ep2.children, el2);
ep2.insertBefore(el1,ep2.children[index2]);
ep1.insertBefore(el2,ep1.children[index1]);
}
代碼非常簡短,開始以為需要判斷被交換的element是否是父層最后一個,但是實際看來,如果insertBefore第二個參數是undefined的話,那么是直接appendChild的。
