作家
登录

javascript inneHTML的地雷

作者: 来源:www.28hudong.com 2013-03-30 01:51:22 阅读 我要评论

回顾一下,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("你踩雷了!"); } 强制在IE8模式下运行 by 司徒正美 [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; 强制在IE8模式下运行 by 司徒正美 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 这样就解决了firefox的情况!

  推荐阅读

  jQuery 性能优化手册 推荐

在twitter上发现了<jQuery Performance Rules>这篇文章, 简单的摘译了一下:总是从ID选择器开始继承 在class前使用tag 将jquery对象缓存起来 掌握强大的链式操作 使用子查询 对直接的DOM操作进行限制 冒泡 消除无效>>>详细阅读


本文标题:javascript inneHTML的地雷

地址:http://www.17bianji.com/kaifa2/JS/27037.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)