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----文件操作
Jan 18 Javascript
javascript或asp实现的判断身份证号码是否正确两种验证方法
Nov 26 Javascript
JQuery解析XML的方法小结
Apr 02 Javascript
angular2中Http请求原理与用法详解
Jan 11 Javascript
Vue 项目分环境打包的方法示例
Aug 03 Javascript
使用FormData实现上传多个文件
Dec 04 Javascript
JavaScript对JSON数组简单排序操作示例
Jan 31 Javascript
JavaScript实现随机五位数验证码
Sep 27 Javascript
JS插入排序简单理解与实现方法分析
Nov 25 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
Mar 10 Javascript
js中forEach,for in,for of循环的用法示例小结
Mar 14 Javascript
Javascript中Microtask和Macrotask鲜为人知的知识点
Apr 02 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数据流应用的简单例子
2012/06/01 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
js实现页面转发功能示例代码
2013/08/05 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
js call方法详细介绍(js 的继承)
2013/11/18 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
深入浅析JavaScript中prototype和proto的关系
2015/11/15 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
Python中url标签使用知识点总结
2020/01/16 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
判断单链表中是否存在环
2012/07/16 面试题
医药工作者的求职信范文
2013/09/21 职场文书
单位办理社保介绍信
2014/01/10 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
大学新生军训方案
2014/05/03 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
2014年技术员工作总结
2014/11/18 职场文书
家长会欢迎词
2015/01/23 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书
python如何进行基准测试
2021/04/26 Python