您的位置:首页 > Web前端 > JavaScript

使用Js实现网页表格操作

2011-10-17 08:59 441 查看
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息