当前位置: 首页 > 图文教程 > 网络编程 > Javascript > javascript inneHTML的地雷

Javascript
Javascript初学者实例教程(10):图像属性
FF与IE下javascript计算屏幕尺寸
可输入的下拉框
超强图片数量上传无限制
提高代码性能技巧谈—以创建千行表格为例
让插入到 innerHTML 中的 script 跑起来的实现代码
自动设为主页
脚本写的IE右键助手
[原创]checkbox实现全选的多种方法 不断更新
Div+CSS+JS树型菜单,可刷新
CSS+JS构建的图片查看器
如何实现iframe(嵌入式帧)的自适应高度
颜色渐变效果
一条一条新闻向上的滚动 不错
模拟抽奖
[原创]用srcElement实现添加效果
获取对象
带Checkbox的列表框
[原创]图片分页查看
[原创]手机号码本地检测

Javascript 中的 javascript inneHTML的地雷


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-02-27   浏览: 316 ::
收藏到网摘: n/a

大家都喜欢用innerHTML添加内容,但是innerHTML这东西在两大阵营中有许多不同。 回顾一下,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 全选 提示:你可先修改部分代码,再按运行]

当我们把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 全选 提示:你可先修改部分代码,再按运行]

这样就解决了firefox的情况!