javascript inneHTML的地雷


回顾一下,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的情况!



相关阅读:
网页取色
用好SNS建站软件UCenter Home词语屏蔽
Linux中让进程在后台运行的方法
Ubuntu新版特性大盘点
winxp 的常用操作及技巧
Oracle中Sequence的使用
HTML表格标记教程(41):表头的宽度和高度属性WIDTH、HEIGHT
Apache 配置详解(最好的APACHE配置教程)
IE和FireFox JavaScript的函数名的作用域的异同
php新建文件自动编号的思路与实现
js预载入和JavaScript Image()对象使用介绍
如何在UNIX下实现Oracle数据库自动备份
Vista系统停止响应解决办法
Linux系统下分发SCP不需要输入密码配置
快速导航

Copyright © 2016 phpStudy |