(一) ie 、firefox以及其它浏览器对于 table 标签的操作都各不相同,在ie中不允许对table和tr的innerHTML赋值,使用js增加一个tr时,使用appendChile方法也不管用。下面是我就三种浏览器测试的结果: insertRow IE6 :支持,而且默认参数为-1,默认添加到最后 FireFox :支持,但部支持默认参数 Opera :支持,支持默认参数,默认添加到最前
AppendChild IE6 :不支持 FireFox :支持,但增加TR后不影响ROWS Opera :支持,效果同insertRow(-1),影响ROWS 最大限度的遵循规范,就能写出安全的、适用性强的代码了: //向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 对应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; }
|