abstrakt:/** * 將一個DOM節(jié)點(diǎn)、HTML字符串混合型參數(shù) * 轉(zhuǎn)化為原生的DOM節(jié)點(diǎn)數(shù)組 * * */ function checkElem(a) { var r = [];
/** * 將一個DOM節(jié)點(diǎn)、HTML字符串混合型參數(shù) * 轉(zhuǎn)化為原生的DOM節(jié)點(diǎn)數(shù)組 * * */ function checkElem(a) { var r = []; if (a.constructor != Array) { //如果不是參數(shù)數(shù)組,則強(qiáng)行轉(zhuǎn)換 a = [a]; } for (var i = 0; i < a.length; i++) { //如果是字符串,例如"<li>aa</li>" if (a[i].constructor == String) { //使用一個臨時元素來存放HTML var div = document.createElement("div"); //注入HTML,轉(zhuǎn)換成DOM結(jié)構(gòu) div.innerHTML = a[i]; for (var j = 0; j < div.childNodes.length; j++) { r[r.length] = div.childNodes[j]; } } else if (a[i].length) { //假定是DOM節(jié)點(diǎn)數(shù)組 for (var j = 0; j < a[i].length; j++) { r[r.length] = a[i][j]; } } else { //DOM節(jié)點(diǎn) r[r.length] = a[i]; } } return r; } /** * 在parent執(zhí)行環(huán)境下,在before元素下前面添加elem元素 * */ function before(parent, before, elem) { //檢查是否提供parent節(jié)點(diǎn)參數(shù) if (elem == null) { elem = before; before = parent; parent = before.parentNode; } //獲取元素的新數(shù)組 var elems = checkElem(elem); /** * 向后遍歷數(shù)組, * 因?yàn)槲覀兿蚯安迦朐? * */ for (var i = elems.length - 1; i >= 0; i--) { parent.insertBefore(elem[i], before); } } /** * 為parent追加一個子元素的輔助函數(shù) * * */ function append(parent, elem) { var elems = checkElem(elem); for(var i = 0; i <= elems.length; i++){ parent.appendChild(elems[i]); } } /** * 刪除elem節(jié)點(diǎn)函數(shù) * * */ function remove(elem) { if(elem) { elem.parentNode.removeChild(elem); } } /** * 從一個元素中刪除所有子節(jié)點(diǎn)的函數(shù) * * */ function empty(elem) { while(elem.firstChild) { remove(elem.firstChild); } }