交換兩個DOM節(jié)點在文檔中的位置,下面的代碼中分了兩種情況:(1)a b是同級元素(2)a嵌套b(或者b嵌套a)html:<div><span id="a1">a</span><span id="b1">b</span></div><div><span id="a2">a</span><span></span><span id="b2">b</span></div><div><span id="a3">a<span id="b3">b</span></span></div>js:function swapElements(a,b){ if(a==b)return; //記錄父元素 var bp=b.parentNode,ap=a.parentNode; //記錄下一個同級元素 var an=a.nextElementSibling,bn=b.nextElementSibling; //如果參照物是鄰近元素則直接調(diào)整位置 if(an==b)return bp.insertBefore(b,a); if(bn==a)return ap.insertBefore(a,b); if(a.contains(b)) //如果a包含了b return ap.insertBefore(b,a),bp.insertBefore(a,bn); else return bp.insertBefore(a,b),ap.insertBefore(b,an);};swapElements(a1,b1);swapElements(a2,b2);swapElements(a3,b3);問題是,(1)為什么同級情況中bp.insertBefore(b,a);要return 回去(2)嵌套情況中,下列代碼看不懂return ap.insertBefore(b,a),bp.insertBefore(a,bn);
[代碼解析] 關(guān)于交換兩個DOM節(jié)點在文檔中的位置
桃花長相依
2018-12-13 18:14:06