关于document的节点;用Dom2创建节点;
一、关于节点
1、节点树状图
document>documentElement>body>tagName
2、节点类型
元素节点(标签)、文本节点(文本)、属性节点(标签属性)
3、document的属性nodeType的返回值是数字:
1:元素节点;2、属性节点;3、文本节点
4、获取节点的方法:
document.getElementById()
document.getElementsByClassName()
document.getElementsByTagName()
document.querySelector()
document.querySelectorAll()
5、属性节点的获取:
元素.attributes获取的是元素身上的所有属性构成的集合(数组),得到的数组里的值的某元素是 元素.attributes[1].value
元素.removeAttribute(“属性”)删除属性
元素.getAttributes(“属性名”) 获取属性名的方法
元素.setAttribute(“属性名”,“属性值”) 给元素设置属性和属性值
6、获取元素的子节点
元素.childNode 这个属性有兼容性
标准浏览器会获取到文本节点,低版本的浏览器不会获取到文本节点,所以使用children获取子节点
(1)获取第一个子节点
标准:元素.firstElementChild
非标准:元素.firstChild
兼容性写法:var list=documentById("list")
var first=list.firstElementChild||list.firstChild
console.log(first)
(2)获取最后一个子节点
标准:元素.lastElementChild
非标准:元素.lastChild
兼容性写法:var list=documentById("list")
var last=list.lasttElementChild||last.firstChild
console.log(last)
(3)获取上一个兄弟节点
标准:元素.previousElementSibling
非标准:元素.previousSibling
(4)获取下一个兄弟节点
标准:元素.nextElementSibling
非标准:元素.nextSibling
7、获取父节点
元素.parentNode 没有兼容性
8、区分offsetparent和parentNode的区别
offsetparent的父级,谁有position:relative;谁就是他的父级
二、DOM2动态创建节点
1、生成节点的方法
document.creatElement("div")
2、插入节点的方法
父元素.appendChild(新节点)
在父节点的后面插入新节点
3、在指定的位置插入新的节点
父元素.insertBefore(新节点,谁前面插入)
新节点插入到指定节点前面
插入新节点的兼容性(浏览器的标准与非标准)
if(list.children[0]){
list.insertBefore(li,list.children[0])
}else{
list.appendChild(li)
}这种写法,是因为低版本浏览器不会吧文本节点当做子节点,所以insertBefor不起作用,要用appendChild追加一个元素
4、删除元素节点
父元素.removeChild()
补充知识点
1、关于超链接 a
<a href="javascript:;">取消刷新页面的功能
<a href="#s"> 锚点跳转,跳转到某一个id叫做S的位置上
<a href="">点击会刷新页面,会向服务器发送一次请求
2、字符串拼接和DOM创建都是渲染得方式
字符串拼接:
优点:简单,层次感强,可以处理大量数据
缺点:字符串拼接会影响到原有子元素的事件
DOM创建:
优点:是一个独立的个体,不会影响到原有元素
缺点:处理数据过量会比较麻烦,会造成dom回流
3、DOM回流
页面渲染的时候,我们队html结构的增删查改时,浏览器会对所有的dom进行重新排列,这就是DOM回流,严重影响了浏览器的性能
关于document的节点;用Dom2创建节点;的更多相关文章
- JQuery_DOM 节点操作之创建节点、插入节点
一.创建节点 为了使页面更加智能化,有时我们想动态的在html 结构页面添加一个元素标签,那么在插入之前首先要做的动作就是:创建节点 <script type="text/javasc ...
- js···DOM2动态创建节点
1.生成节点的方法 document.createElement(“div”) 2.插入节点的方法 父元素.appendChild(新节点) 在父节点中的子节点后面插入新的节点 3.在指定的位置 ...
- js创建节点及其属性
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Javascript 笔记与总结(2-10)删除节点,创建节点
[删除节点] 步骤: ① 找到对象 ② 找到他的父对象 parentObj ③ parentObj.removeChild(子对象); [例] <!DOCTYPE html> <ht ...
- js添加创建节点和合并节点
var _div = document.createElement("div"), //创建节点 txt1 = document.createTextNode("123& ...
- 1.javascript节点的操作 创建、添加、移除、移动、复制、插入(修改)
(1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 createTextNode() //创建一个文本节 ...
- javascript 创建节点和新增节点
createElement(tabName) 创建一个为tagName的新元素节点 ANode.appendChild(BNode)把B节点追加至A节点的末尾 insertBefore(ANode,B ...
- 11-15 dom 动态创建节点
1.生成节点的方法 document.createElement(“div”) 2.插入节点的方法 父元素.appendChild(新节点) 在父节点中的子节点后面插入新的节点 3.在指定的位置 ...
- javascript创建节点的事件绑定
javascript创建节点的事件绑定 timeupdate事件是<video>中用来返回视频播放进度的事件,绑定在<video>标签返回视频播放位置(每秒计). 现video ...
随机推荐
- 如何遍历List对象
for(String str : list) {//其内部实质上还是调用了迭代器遍历方式,这种循环方式还有其他限制,不建议使用. System.out.println(str); } .普通for循环 ...
- mac使用brew安装sshpass
brew安装sshpass brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Form ...
- C++ 使用VS2010创建MFC ActiveX工程项目
1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行.这个容器包括WEB网页,应用程序窗体等... Activ ...
- ubuntu 下 rvm 卸载和重装
卸载: sudo apt-get --purge remove ruby-rvm sudo rm -rf /usr/share/ruby-rvm /etc/rvmrc /etc/profile.d/r ...
- 使用javap进行反编译Java枚举
这是一个枚举类Day.java public enum Day { MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY(" ...
- 《深入理解JAVA虚拟机》----------第三章 垃圾收集器与内存分配策略,笔记(下)
1.垃圾收集器 1.1 Serial收集器 这个收集器是一个单线程的收集器,它在进行垃圾收集时,必须暂停其他所有的工作线程. 它是虚拟机运行在Client模式下的默认新生代收集器,它简单而高效. 1. ...
- SpringCloud---Feign上传下载详解
1.使用原因 公司最近做的项目在用SpringCloud,涉及到了上传.但是Feign本身是不支持文件类型的.所以这里把上传下载的实现分享一下. 2.所需配置 这是自己实现的一个formEncoder ...
- 11.15java课后作业
1,编写一个程序,指定一个文件夹,能自动计算出其总容量 package Account; import java.io.File; import java.util.ArrayList; public ...
- Mysql 单表操作、增删查改(基础4)
新建一个表,往里面插入数据. #新建一个表 mysql> create table test( -> id int, -> name varchar(20) -> );Quer ...
- layui复选框
效果图 layui复选框,一个主的复选框控制多个从复选框,主复选框和从复选框的颜色不一样 layui复选框的样式,都是在选然后才会有的,所以直接通过css设置就实现不了了.只可以通过js动态设置 ht ...