(一) ie 、firefox以及其它瀏覽器對于 table 標(biāo)簽的操作都各不相同,在ie中不允許對table和tr的innerHTML賦值,使用js增加一個tr時,使用appendChile方法也不管用。下面是我就三種瀏覽器測試的結(jié)果: insertRow IE6 :支持,而且默認(rèn)參數(shù)為-1,默認(rèn)添加到最后 FireFox :支持,但部支持默認(rèn)參數(shù) Opera :支持,支持默認(rèn)參數(shù),默認(rèn)添加到最前
AppendChild IE6 :不支持 FireFox :支持,但增加TR后不影響ROWS Opera :支持,效果同insertRow(-1),影響ROWS 最大限度的遵循規(guī)范,就能寫出安全的、適用性強的代碼了: //向table追加一個空行: var otr = otable.insertRow(-1); var otd = document.createElement("td"); otd.innerHTML = " "; otd.className = "XXXX"; otr.appendChild(otd); 這樣就可以運行在這三種瀏覽器上了 (三)childNodes的操作 (1)屬性nodeName Utils.getChildrenByTagName = function (node, tagName) { var ln = node.childNodes.length; var arr = []; for (var z = 0; z < ln; z++) { if (node.childNodes[z].nodeName == tagName) { arr.push(node.childNodes[z]); } } return arr; }; (2)屬性id function getNodeID(parent, id) { var ln = parent.childNodes.length; for (var z = 0; z < ln; z++) { if (parent.childNodes[z].id == id) { return parent.childNodes[z]; } } return null; } (3)屬性className 對應(yīng)class,如 <tr class="class1"> function getElementsByClassName(node, className) { var children = node.getElementsByTagName("*"); var elements = new Array(); for (var i = 0; i < children.length; i++) { var child = children[i]; var classNames = child.className.split(" "); for (var j = 0; j < classNames.length; j++) { if (classNames[j] == className) { elements.push(child); break; } } } return elements; }
|