博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js的DOM编程艺术的笔记(二)
阅读量:5921 次
发布时间:2019-06-19

本文共 1485 字,大约阅读时间需要 4 分钟。

hot3.png

1:编写js的原则:“预留退路问题” ; “js代码和html分离” ; “进行必要的检查”

2: 动态创建html内容:document.write()方法 .和 innnerHTML属性;深入剖析DOM:createElement(), appendChild(), insertBefore()以及createTextNode()等。使用js改变文档结构和内容。理解 【元素节点对象和文本节点以及属性节点的关系】。其中createElement()创建元素节点;createTextNode()创建文本节点;appendChild()添加子节点;insertBefore(ndoe1,node2)【使用insertBefore的三要素:1.明确父节点;2.明确要插入的节点node1; 3:插入那个节点之前 node2】。

3: firstChild 和lastChild 获取到的节点也有可能会是文本节点

【<b id="child">My text <p>铁素体</p></b> :

    var bNodeOld = document.getElementById("child");

    alert(bNodeOld.firstChild); //获取的是 My text的文本节点

    alert(bNodeOld.firstChild.nextSibling); //获取到的就是<p>元素节点

4:DOM文档中的每个元素都是对象。这些对象都有着不同的属性,有些属性包含着特定元素在节点树上的位置信息【parentNode, nextSibling, previousSibling, ChildNodes, firstChild, lastChild等属性都是元素位置有关的】;有些属性是元素自身的信息【nodeValue, nodeType, nodeName等属性】;除此之外每个元素节点对象还有一个style的属性,style属性包含着元素的样式信息。【值得注意的是,元素节点的style属性返回的也是一个对象】

5:在使用js处理DOM的时候,【空格换行符也是一个文本节点】例如childNodes 和 nextSibling 都有可能获取到这样的文本节点。

实例方法:

//getNextElementNode:返回第一个元素节点【只返回第一个元素节点】

function getNextElementNode(pNode){
    if(pNode.nodeType == 1){ //如果是元素节点 直接返回
        return pNode;
    }
    if(pNode.nextSibling){ //否则判断是否有下一个节点
        return getNextElementNode(pNode.nextSibling); //继续递归函数
    }
    return null;
}

//自定义的addClass方法

function addClass(element, className){

    if(!element.className){ //如果元素没有class属性,直接将新的className赋予它
       element.className = className;
    }else{                                //否则该元素的className = 原来的className + " " + 新的className
       element.className += " " + className;
    }
}

 

转载于:https://my.oschina.net/u/2870118/blog/853715

你可能感兴趣的文章
Mysql数据库的使用总结之Innodb简介(一)
查看>>
如何在Windows7中快速打开命令提示符
查看>>
深入 HBase 架构解析(1)
查看>>
HorizontalScrollView
查看>>
XenServer 6.5实战系列之十:Create VMs from a VM Template
查看>>
python接口自动化测试(四)-Cookie&Sessinon
查看>>
C#进阶系列——WebApi 接口参数不再困惑:传参详解
查看>>
css中元素的定位:position
查看>>
异步编程
查看>>
[Android Pro] Gradle tip #3-Task顺序
查看>>
[GIT]
查看>>
Android -- View
查看>>
【oracle官网】 Restoring a Database on a New Host
查看>>
关于表联结方法_sort-merge join
查看>>
Vagrant基础简要记录
查看>>
Python探索记(09)——字符串(上)
查看>>
HDOJ 2028 Lowest Common Multiple Plus(n个数的最小公倍数)
查看>>
[20170518]不同事务能使用相同回滚段吗.txt
查看>>
物理卷操作命令:pvcreate,pvscan,pvdisplay.卷组操作命令:vgcreate,vgdisplay. (转)
查看>>
Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-2 创建熊猫类
查看>>