javascript针对DOM的应用分析(二)


Posted in Javascript onApril 15, 2012

其实在原生的也JS也有这些属性。和JQ几乎相同但是比JQ少一些。但是用起来却比JQ麻烦一点。主要因为FF浏览器,因为FF会把你的换行也当做一个DOM元素。比如说

<div id = "dom"> 
<div></div> 
<div></div> 
</div>

我用原生的JS获取ID为dom的元素下的子元素。用我第一章说的方法就是var a = document.getElementById("dom").getElementsByTagName("div");这个没问题。可以alert(a.length)提示会是2,但是我们现在换一种方法获取就是我上章提到的var b = document.getElementById("dom").childNodes;如果这样alert(b.length)IE浏览器上没问题还是2,但是在FF浏览器上会提示是4,这就是因为FF把换行也当做一个元素了。
所以我们必须处理一下才能用JS的那些属性。处理思想很简单就是遍历一下这些元素。把元素类型为空格而且是文本都删除。处理函数是这样的
function del_space(elem){ 
var elem_child = elem.childNodes; 
for(var i=0;i<elem_child.length;i++){ 
if(elem_child.nodeName == "#text" && !/\S/.test(elem_child.nodeValue)) 
{elem.removeChild(elem_child)} 
}}

我解释一下这个函数
var elem_child = elem.childNodes;
把传进来的elem元素的子元素都扔给elem_child;
for(var i=0;i<elem_child.length;i++){ 
if(elem_child.nodeName == "#text" && !/\S/.test(elem_child.nodeValue)) 
{elem.removeChild(elem_child)} 
}

遍历这些子元素。如果这些元素里面有节点类型是文本并且这个文本类型节点的节点值是空的。就把它删除

(nodeName是JS里的一个属性,得到这个节点的节点类型,/\S/这个是非空字符在JS里的正规表达式。前面加一个感叹号就表示是空字符。test是JS的一个方法,就是把它里面的东西和外面的东西对比一下。nodeValue表示得到这个节点里的值removeChild也是个方法就删除外面这个元素的某个子元素)

这样只需要在调用这些属性之前调用这个函数把空格清理一下就能放心用了比如

<div id = "dom"> 
<div></div> 
<div></div> 
</div> <script> 
function dom(){ 
var a = document.getElementById("dom"); 
del_space(a);调用清理空格的函数 
var b = a.childNodes;获取a的全部子节点; 
var c = a.parentNode;获取a的父节点; 
var d = a.nextSbiling;获取a的下一个兄弟节点 
var e = a.previousSbiling;获取a的上一个兄弟节点 
var f = a.firstChild;获取a的第一个子节点 
var g = a.lastChild;获取a的最后一个子节点 
} 
</script>

(另外说下。var b = a.childNodes;获取的也是一个数组;所以比如我要用第一个节点就是childNodes[0];我要用第二个节点就是childNodes[1];以此类推)

到这里获取DOM方面就算是结束了。下章就教大家如何操作DOM元素。

Javascript 相关文章推荐
自制轻量级仿jQuery.boxy对话框插件代码
Oct 26 Javascript
JS运行耗时操作的延时显示方法
Nov 19 Javascript
JavaScript 验证码的实例代码(附效果图)
Mar 22 Javascript
查找iframe里元素的方法可传参
Sep 11 Javascript
Node.js中创建和管理外部进程详解
Aug 16 Javascript
浅谈js中变量初始化
Feb 03 Javascript
Javascript之Math对象详解
Jun 07 Javascript
Google 地图控件集详解及实例代码
Aug 06 Javascript
Vue实现带进度条的文件拖动上传功能
Feb 23 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
Nov 21 Javascript
vue项目强制清除页面缓存的例子
Nov 06 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
Aug 27 Javascript
javascript针对DOM的应用实例(一)
Apr 15 #Javascript
JavaScript中的null和undefined解析
Apr 14 #Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
Apr 14 #Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 #Javascript
深入理解JavaScript系列(16) 闭包(Closures)
Apr 12 #Javascript
深入理解JavaScript系列(15) 函数(Functions)
Apr 12 #Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
Apr 12 #Javascript
You might like
php中在PDO中使用事务(Transaction)
2011/05/14 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
Extjs学习过程中新手容易碰到的低级错误积累
2010/02/11 Javascript
JS中Iframe之间传值的方法
2013/03/11 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
2017/01/17 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
深入Python函数编程的一些特性
2015/04/13 Python
python执行等待程序直到第二天零点的方法
2015/04/23 Python
深入解析Python中的上下文管理器
2016/06/28 Python
python并发编程之线程实例解析
2017/12/27 Python
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
STRATHBERRY苏贝瑞包包官网:西班牙高级工匠手工打造
2020/11/10 全球购物
化学相关工作求职信
2013/10/02 职场文书
教师求职信范文
2014/05/24 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书
错误码NET::ERR_CERT_DATE_INVALID证书已过期解决方法?
2022/07/07 数码科技