js有关元素内容操作小结


Posted in Javascript onDecember 20, 2011

1.innerHTML
这个大家一定都很熟悉,可读可写,修改元素内容相当快捷方便,在兼容问题上可以参考W3Help中一个知识记录。

2.outerHTML
此方法可以用于对元素自身的快速替换,比如:

<p id="hello">Hello, I am a demo</p> 
$('hello').outerHTML = '<p>Hello, I am a replacement</p>';

遗憾的是,firefox目前还不支持(我当前用firefox8),其他浏览器支持的还不错,在ff中可以用innerHTML来模拟实现。

3.documentFragment
DocumentFragment能实现高效率的DOM节点插入操作,我们可以新建一个DocumentFragment。

var docFragment = document.createDocumentFragment();

它支持元素节点的appendChild方法,可以利用它进行追加节点,相当于内存中的一个临时空间, 然后一次性加入DOM Tree中,较少浏览器相关的reflow和repaint事件,在之前的博文中有提到。

4.insertAdjacentHTML
这个方法很有意思,是IE4最先引入的,目前也写入了HTML5标准,目前所有浏览器都支持,ff是8才刚开始支持的。 它能够实现在元素的里外,共4个地方灵活的添加内容,例如:

<!-- beforebegin --><p id="test"><!-- afterbegin -->hello, I am a demo.<!-- beforeend--></p><!-- afterend--> 
$('test').insertAdjacentHTML('beforebegin', /* your content here */);

这确实很cool不是么,但遗憾的是,IE自己引入,确在IE6~8的版本中存在不少bug,比如我测试中遇到如果元素是div的话, 能够在四个地方,都能顺利插入内容,这是我们所预期的,但是我换成p元素的话,‘beforebegin'和‘afterend'就会报错, 它变得只支持p外部的内容插入,不允许插入到p的内部,还有tr,td不支持此方法等各种bug。IE9测下来,表现预期。 关于这个方法jQuery之父,有篇博客有讲,感兴趣的可以稍微参考下http://ejohn.org/blog/dom-insertadjacenthtml/

5.textContent
这个是针对元素中的文本内容的操作,提取元素本身和其子元素中文本内容,这个用的频率不是很高,但还是要知道下, 比如:

<div id="test"><p>whatever, blah blah.</p>hello,I am a <em>Demo</em></div> 
$('test').textContent //whatever, blah blah.hello, I am a Demo

把文本直接连接起来。IE9+和其他浏览器都很好的支持此方法。

6.innerText
这个也是由IE最初引入的,除了firefox,目前其他浏览器也都支持,但是结果有些微妙的不同。在opera中,结果和textContent一致,在chrome中,与包含该文本元素的样式有关。在IE9中,与包含该文本元素的样式有关。 事实上,innerText和textContent看似差不多,但还是有一些值得注意的不同之处。 具体MDN上有一定的说明:

1.textContent能够获取script,style元素中得文本。innerText不行

2.innerText结果跟样式有关,不能获取隐藏元素的文本内容,textContent则不受限制

3.innerText会触发浏览器内部的reflow事件,而textContent不会,这个对效率有点影响。

当然对于IE6~8,我们可以比较容易地通过遍历节点来实现textContent的效果。如犀牛书中所给出的解决方法:

function textContent(e) { 
var child, type, s = []; // s holds the text of all children 
for(child = e.firstChild; child != null; child = child.nextSibling) { 
type = child.nodeType; 
if(type === 3 || type === 4) { //Text and CDATASection nodes 
s.push(child.nodeValue); 
} else if(type === 1) { 
s.push(textContent(child)); 
} 
return s.join(''); 
} 
}
Javascript 相关文章推荐
让插入到 innerHTML 中的 script 跑起来的实现代码
Jul 01 Javascript
ajax 缓存 问题 requestheader
Aug 01 Javascript
理解javascript中的回调函数(callback)
Sep 02 Javascript
js字符串操作方法实例分析
May 06 Javascript
js拼接html字符串的注意事项
Oct 13 Javascript
js控制台输出的方法(详解)
Nov 26 Javascript
利用Jasmine对Angular进行单元测试的方法详解
Jun 12 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
Dec 01 Javascript
微信小程序实现评论功能
Nov 28 Javascript
JavaScript实现省市区三级联动
Feb 13 Javascript
Js逆向实现滑动验证码图片还原的示例代码
Mar 10 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
Jul 18 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
Dec 20 #Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
Dec 20 #Javascript
js change,propertychange,input事件小议
Dec 20 #Javascript
JavaScript面向对象设计二 构造函数模式
Dec 20 #Javascript
Javascript面向对象设计一 工厂模式
Dec 20 #Javascript
用JavaScript仿PS里的羽化效果代码
Dec 20 #Javascript
javascript判断iphone/android手机横竖屏模式的函数
Dec 20 #Javascript
You might like
php eval函数一句话木马代码
2015/05/21 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
yii2 resetful 授权验证详解
2017/05/18 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
php文件后缀不强制为.php的实操方法
2019/09/18 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
javascript实用方法总结
2015/02/06 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
bootstrap时间插件daterangepicker使用详解
2017/10/19 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
python常见的格式化输出小结
2016/12/15 Python
python绘制条形图方法代码详解
2017/12/19 Python
Python 寻找局部最高点的实现
2019/12/05 Python
pytorch如何冻结某层参数的实现
2020/01/10 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
利用python爬取有道词典的方法
2020/12/08 Python
让IE6支持css3,让 IE7、IE8 都支持CSS3
2011/10/09 HTML / CSS
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
端午节演讲稿
2014/05/23 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android
vue判断按钮是否可以点击
2022/04/09 Vue.js
python 学习GCN图卷积神经网络
2022/05/11 Python
详解CSS3浏览器兼容
2022/12/24 HTML / CSS