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 相关文章推荐
用Javscript实现表单复选框的全选功能
May 25 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
Feb 25 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
Mar 11 Javascript
JS判断客户端是手机还是PC的2个代码
Apr 12 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
Dec 08 Javascript
angular中如何绑定iframe中src的方法
Feb 01 Javascript
浅谈KOA2 Restful方式路由初探
Mar 14 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
Apr 17 Javascript
前后端常见的几种鉴权方式(小结)
Aug 04 Javascript
layui的数据表格+springmvc实现搜索功能的例子
Sep 28 Javascript
Vue实现点击按钮复制文本内容的例子
Nov 09 Javascript
JavaScript观察者模式原理与用法实例详解
Mar 10 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下通过file_get_contents的代理使用方法
2011/02/16 PHP
基于empty函数的输出详解
2013/06/17 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
smarty高级特性之对象的使用方法
2015/12/25 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
JQuery实现动态表格点击按钮表格增加一行
2014/08/24 Javascript
基于javascript实现根据身份证号码识别性别和年龄
2016/01/22 Javascript
谈一谈javascript中继承的多种方式
2016/02/19 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
python海龟绘图实例教程
2014/07/24 Python
Python解析nginx日志文件
2015/05/11 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
Python配置虚拟环境图文步骤
2019/05/20 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
几个SQL的面试题
2014/03/08 面试题
材料物理专业大学毕业生求职信
2013/10/15 职场文书
优秀教师的感人事迹
2014/02/04 职场文书
百年校庆节目主持词
2014/03/27 职场文书