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 相关文章推荐
JS中confirm,alert,prompt函数区别分析
Jan 17 Javascript
javascript中直接写php代码的方法
Jul 31 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
Dec 25 Javascript
jquery实现公告翻滚效果
Feb 27 Javascript
PHP结合jQuery实现的评论顶、踩功能
Jul 22 Javascript
JS+CSS实现简易实用的滑动门菜单效果
Sep 18 Javascript
js实现超酷的照片墙展示效果图附源码下载
Oct 08 Javascript
JavaScript制作简单分页插件
Sep 11 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
Sep 20 Javascript
原生javascript实现读写CSS样式的方法详解
Feb 20 Javascript
JS利用cookies设置每隔24小时弹出框
Apr 20 Javascript
详解如何使用webpack打包多页jquery项目
Feb 01 jQuery
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面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
javascript汉字拼音互转的简单实例
2016/10/09 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
详解vue中组件参数
2018/07/09 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
vue $set 给数据赋值的实例
2019/11/09 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
总结Python中逻辑运算符的使用
2015/05/13 Python
Python探索之ModelForm代码详解
2017/10/26 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
2020/06/16 Python
python urllib和urllib3知识点总结
2021/02/08 Python
美国温暖商店:The Warming Store
2018/12/15 全球购物
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
法人授权委托书样本
2014/09/19 职场文书
Golang中channel的原理解读(推荐)
2021/10/16 Golang
Python中的嵌套循环详情
2022/03/23 Python