信息发布→ 登录 注册 退出

javascript inneHTML的地雷

发布时间:2026-01-11

点击量:
回顾一下,IE会把标签内前面的一些空白kill掉,还会把它里面标签统统大写,会显示动态添加的属性,在某些元素中,它还是只读的。这个由IE发明的东西,最后被爆如此多缺陷,真是令人心寒。不过innerHTML还有一地雷,存在于最标准的火狐中,看下面代码:
复制代码 代码如下:
var newTable = document.createElement('table');
document.body.appendChild(newTable);
var newTr = document.createElement('tr');
var rowContent = '<td>司徒正美 </td><td><em>RestlessDream</em></td>';
newTr.innerHTML = rowContent;
newTable.appendChild(newTr);
alert(newTable.innerHTML)
if (rowContent.toLowerCase() == newTr.innerHTML.toLowerCase()) {
alert("一定如我所愿!");
}else {
alert("你踩雷了!");
}


[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
当我们把innerHTML加入到tr节点时,它会被firefox解析成:
复制代码 代码如下:司徒正美 <em>RestlessDream</em>
而不再是原来的:
复制代码 代码如下:<td>司徒正美 </td><td><em>RestlessDream</em></td>
td标签被去掉了!我想是不是与加入DOM树的顺序有关,调整一下:
复制代码 代码如下:
var newTable = document.createElement('table');
document.body.appendChild(newTable);
var newTr = document.createElement('tr');
newTable.appendChild(newTr);
var rowContent = '<td>司徒正美 </td><td><em>RestlessDream</em></td>';
newTr.innerHTML = rowContent;


[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
这样就解决了firefox的情况!
标签:# 会把  # tr  # rowContent  # lt  # em  # RestlessDream  # gt  # 司徒正美  # 在某些  # 解决了  # 它会  # javascript  # 当我们  # 火狐  # 掉了  # 把它  # 还会  # 模式下  # 我想  # 全选  # 所愿  # inneHTML  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!