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

Javascript
JQuery的ajax基础上的超强GridView展示
js表格分页实现代码
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
Tab页界面,用jQuery及Ajax技术实现
用jQuery技术实现Tab页界面之二
通过JS 获取Mouse Position(鼠标坐标)的代码
javascript 必知必会之closure
jquery ajax 登录验证实现代码
jQuery 使用手册(一)
jQuery 使用手册(二)
jQuery 使用手册(三)
jQuery 使用手册(五)
用Javascript 获取页面元素的位置的代码
网页自动跳转代码收集
JS 连锁泡泡 v1.1
javascript的onchange事件与jQuery的change()方法比较
jquery 模式对话框终极版实现代码
javascript 页面划词搜索JS
javascript String split方法误操作
一个JS小玩意 几个属性相加不能超过一个特定值.

Javascript 中的 javascript inneHTML的地雷


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-02-27   浏览: 153 ::
收藏到网摘: 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的情况!