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 相关文章推荐
firefox浏览器下javascript 拖动层效果与原理分析代码
Dec 04 Javascript
jQuery实现切换页面布局使用介绍
Oct 09 Javascript
jQuery创建DOM元素实例解析
Jan 19 Javascript
jquery插件jSignature实现手动签名
May 04 Javascript
javascript实现信息增删改查的方法
Jul 25 Javascript
基于JavaScript实现网页倒计时自动跳转代码
Dec 28 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
Jan 17 Javascript
基于vue组件实现猜数字游戏
May 28 Javascript
vue.js $refs和$emit 父子组件交互的方法
Dec 20 Javascript
详解Angular操作cookies方法
Jun 01 Javascript
webpack4实现不同的导出类型
Apr 09 Javascript
JS实现躲避粒子小游戏
Jun 18 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中判断变量为空的几种方法小结
2013/11/12 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
Python中使用PyHook监听鼠标和键盘事件实例
2014/07/18 Python
django的ORM操作 删除和编辑实现详解
2019/07/24 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
Python 实现一个简单的web服务器
2021/01/03 Python
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
旅游专业职业生涯规划范文
2014/01/13 职场文书
核心价值观演讲稿
2014/05/13 职场文书
中学生自我评价范文
2015/03/03 职场文书
宾馆安全管理制度
2015/08/06 职场文书