使用JS操作页面表格,元素的一些技巧

2018-10-15 17:04

阅读:559

(一)
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追加一个空行:
varotd=document.createElement("td");
otd.innerHTML="";
otd.className="XXXX";
otr.appendChild(otd);

这样就可以运行在这三种浏览器上了
(三)childNodes的操作
(1)属性nodeName
Utils.getChildrenByTagName=function(node,tagName){
varln=node.childNodes.length;
vararr=[];
for(varz=0;z<ln;z++){
if(node.childNodes[z].nodeName==tagName){
arr.push(node.childNodes[z]);
}
}
returnarr;
};
(2)属性id
functiongetNodeID(parent,id){
varln=parent.childNodes.length;
for(varz=0;z<ln;z++){
if(parent.childNodes[z].id==id){
returnparent.childNodes[z];
}
}
returnnull;
}
(3)属性className
对应class,如<trclass="class1">
functiongetElementsByClassName(node,className){
varchildren=node.getElementsByTagName("*");
varelements=newArray();
for(vari=0;i<children.length;i++){
varchild=children[i];
varclassNames=child.className.split("");
for(varj=0;j<classNames.length;j++){
if(classNames[j]==className){
elements.push(child);
break;
}
}
}
returnelements;
}


评论


亲,登录后才可以留言!