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 相关文章推荐
通过身份证号得到出生日期和性别的js代码
Nov 23 Javascript
jQuery实现可拖动的浮动层完整代码
May 27 Javascript
js 对小数加法精度处理示例说明
Dec 27 Javascript
jquery.validate提示错误信息位置方法
Jan 22 Javascript
使用vue.js实现联动效果的示例代码
Jan 10 Javascript
jquery实现简单实用的轮播器
May 23 jQuery
使用Vue完成一个简单的todolist的方法
Dec 01 Javascript
js实现复制功能(多种方法集合)
Jan 06 Javascript
vuejs前后端数据交互之从后端请求数据的实例
Aug 11 Javascript
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
JavaScript实现表单验证功能
Dec 09 Javascript
vue-element-admin项目导入和导出的实现
May 21 Vue.js
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
动态新闻发布的实现及其技巧
2006/10/09 PHP
PHP 获取目录下的图片并随机显示的代码
2009/12/28 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
php中file_exists函数使用详解
2015/05/08 PHP
php简单生成随机数的方法
2015/07/30 PHP
Yii2实现自定义独立验证器的方法
2017/05/05 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
BootStrap modal模态弹窗使用小结
2016/10/26 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
普通大学毕业生自荐信
2013/11/04 职场文书
安全生产目标责任书
2014/04/14 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
经典导游欢迎词
2015/01/26 职场文书
开票员岗位职责
2015/02/12 职场文书
详解在OpenCV中如何使用图像像素
2022/03/03 Python
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis