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 相关文章推荐
求得div 下 img的src地址的js代码
Feb 28 Javascript
JavaScript 克隆数组最简单的方法
Feb 12 Javascript
javascript基础知识大集锦(一) 推荐收藏
Jan 13 Javascript
你必须知道的Javascript知识点之&quot;深入理解作用域链&quot;的介绍
Apr 23 Javascript
Bootstrap布局组件应用实例讲解
Feb 17 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
Aug 01 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
Dec 25 Javascript
Angularjs中使用指令绑定点击事件的方法
Mar 30 Javascript
Vue shopCart 组件开发详解
Jan 26 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
Sep 29 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
Nov 06 Javascript
js前端设计模式优化50%表单校验代码示例
Jun 21 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 文本文件的读取效率
2012/02/10 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
2020/01/25 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
javascript event 事件解析
2011/01/31 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
Python实现二分法算法实例
2015/02/02 Python
Python字符串和文件操作常用函数分析
2015/04/08 Python
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
python3编码问题汇总
2016/09/06 Python
使用Python完成15位18位身份证的互转功能
2019/11/06 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
体育学院毕业生自荐信
2013/11/03 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
交通事故调解协议书
2014/04/16 职场文书
个人借款协议书范本
2014/11/17 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
入党心得体会
2019/06/20 职场文书
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python
js前端图片加载异常兜底方案
2022/06/21 Javascript