日期:2014-05-16  浏览次数:20323 次

(转)IE/FireFox/Opera js:table.insertRow的区别

浏览器兼容真麻烦!得好好学习,W3C规范得看看

?

ie,firefox以及其它浏览器对于 table 标签的操作都各不相同,在ie中不允许对table和tr的innerHTML赋值,使用js增加一个tr时,使用appendChile方法也不管用。下面是我就三种浏览器测试的结果:

?
??????????????????????? ?ie6????????????????????? ????? ?firefox???????????????????????? ?opera???
--------------------------------------------
insertRow??????? 支持,而且???????????????? ?支持,????????????????????????? 支持,
?????????????????????? ?默认参数-1??????????????? 但不支持默认参数????????? 支持默认参数0
??????????????????????? 默认添加到最后????????????????????????????????????????????? ?默认添加到最前
--------------------------------------------
appendChild???? 不支持?????????????????????? 支持,但是增加???????????? 支持,效果同insertRow(-1)
????????????????????????????????????????????????????????? ?tr后不影响rows????????????? ?影响rows

最大限度的遵循规范,就能写出安全的、适用性强的代码了:

//向table追加一个空行:
var otr = otable.insertRow(-1);
var otd = document.createElement("td");
otd.innerHTML = " ";?
otd.className = "XXXX";?
otr.appendChild(otd);

这样就可以运行在这三种浏览器上了