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实例属性和原型属性示例详解
Nov 23 Javascript
JQuery插入DOM节点的方法
Jun 11 Javascript
js生成随机数的方法实例
Oct 16 Javascript
jQuery实现的简单提示信息插件
Dec 08 Javascript
卸载安装Node.js与npm过程详解
Aug 15 Javascript
JavaScript制作颜色反转小游戏
Sep 25 Javascript
Vue2.0 UI框架ElementUI使用方法详解
Apr 14 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
May 07 Javascript
vue中v-for加载本地静态图片方法
Mar 03 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
Jun 23 Javascript
vue input实现点击按钮文字增删功能示例
Jan 29 Javascript
js实现固定区域内的不重叠随机圆
Oct 24 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配置文件中最常用四个ini函数
2007/03/19 PHP
PHP 中的批处理的实现
2007/06/14 PHP
初品cakephp 入门基础
2012/02/16 PHP
使用 PHPMAILER 发送邮件实例应用
2012/11/07 PHP
Laravel框架数据库CURD操作、连贯操作总结
2014/09/03 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
js冒泡法和数组转换成字符串示例代码
2013/08/14 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
Javascript中arguments对象的详解与使用方法
2016/10/04 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
python之Socket网络编程详解
2016/09/29 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
python实现比较文件内容异同
2018/06/22 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
UNIX文件类型
2013/08/29 面试题
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
销售实习自我鉴定
2013/12/07 职场文书
租房协议书范本
2014/04/09 职场文书
读书小明星事迹材料
2014/05/03 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
教导主任个人总结
2015/03/03 职场文书
敬老院活动感想
2015/08/07 职场文书
找规律教学反思
2016/02/23 职场文书