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 相关文章推荐
javascript 基础篇4 window对象,DOM
Mar 14 Javascript
js打开新窗口方法整理
Feb 17 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
Jul 18 Javascript
javascript数据类型验证方法
Dec 31 Javascript
AngularJs Modules详解及示例代码
Sep 01 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
Jan 10 Javascript
js实现图片放大展示效果
Aug 30 Javascript
vue请求本地自己编写的json文件的方法
Apr 25 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
May 07 Javascript
javascript实现blob加密视频源地址的方法
Aug 08 Javascript
wx-charts 微信小程序图表插件的具体使用
Aug 18 Javascript
JavaScript 作用域scope简单汇总
Oct 23 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
php下检测字符串是否是utf8编码的代码
2008/06/28 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
PHP6新特性分析
2016/03/03 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
PHP7.3.10编译安装教程
2019/10/08 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
jQuery1.6 使用方法二
2011/11/23 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
2020/04/09 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
Python基于回溯法子集树模板解决野人与传教士问题示例
2017/09/11 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
python文件读写代码实例
2019/10/21 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
Html5+CSS3+EL表达式问题小结
2020/12/19 HTML / CSS
新东方旗下远程教育网站:新东方在线
2020/03/19 全球购物
"引用"与指针的区别是什么
2016/09/07 面试题
预备党员政审材料
2014/02/04 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
2016公司中秋节寄语
2015/12/07 职场文书
理解深度学习之深度学习简介
2021/04/14 Python