DOM节点操作、事件对象与BOM

1.节点操作

根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点:

整个文档是一个文档节点  document

每个 HTML 元素是元素节点

HTML 元素内的文本是文本节点

每个 HTML 属性是属性节点

注释是注释节点

 

节点类型

通过noteType属性可以获取节点的类型

document 的节点类型---9

标签   的节点类型 ----1

属性的节点类型 -----2      getAttributeNode("属性"):获取元素的属性节点

文本的节点类型 ----3      元素的第一个子节点就是文本节点

 

节点名称

通过nodeName可以获取元素的节点名称

document 的节点名称----#document

标签的节点名称 -----大写的标签名

属性的节点名称---属性名

文本的节点名称-------#text

 

节点值

通过nodeValue可以获取元素的节点的值

document 的节点值-----null

标签的节点值----------null

属性的节点值--------属性值

文本的节点值---文本的内容

 

节点之间的关系

DOM节点操作、事件对象与BOM

 

 

 节点之间的关系

节点之间的关系就是嵌套关系(父子关系)、并列关系(兄弟关系)

父节点:parentNode

父元素节点:parentElement

子节点:childNodes         标签节点、文本节点、注释节点   得到的是伪数组

子元素节点:children        标签节点

第一个子节点 :firstChid   文本

第一个子元素节点:firstElementChild:  第一个标签

最后一个子节点 ------lastChild   文本

最后一个子元素节点----lastElementChild   最后一个标签

上一个子节点: previousSibling  文本

上一个子元素节点---previousElementSibling   上一个标签

下一个子节点  nextSibling  文本

下一个子元素节点  nextElementSibling  下一个标签

 

 

总结:firstChild、lastChild、previousSibling、nextSibling获取到的都是文本,如果没有就是文本节点名称#text, firstElementChild、lastElementChild、previousElementSibling、nextElementSibling获取到的都是标签,如果没有就是空。

 

插入节点

insertBefore()方法可在已有的子节点插入一个新的子节点

node.insertBefore(newnode,existingnode) 参数newnode是要插入的节点对象,existingnode是要添加新的节点前的子节点。

 

 

 

创建元素的三种方式

(1)document.write()

弊端:只能往body中添加元素

 

document.write('<div class = "box1"></div>')

 

(2)innerHTML

弊端:在同级下只能添加一种元素,多个会覆盖

document.getElementById("divObj").innerHTML = "<p>哈哈</p>"

 

(3)document.createElement()     (推荐使用这种方法)

  父元素.appendChild(子元素)         给父元素末尾添加子元素

 var pObj = document.createElement("p")

divObj1.appendChild(pObj);

 

动态的创建列表

思路:1、创建内容数组

2、获取元素,给按钮绑定单击事件

3、创建ul标签

4、将ul添加到box中

5、遍历数组

6、创建li标签

7、添加内容

8、按钮禁用

 

代码:

 var list = ["功法1","功法2","功法3","功法4","功法5"]     var box = document.querySelector("div")     document.querySelector("button").onclick = function(){         box.appendChild(document.createElement("ul"))         for(var i =0;i<list.length;i++){            var li =   document.createElement("li")            li.innerHTML = list[i]             if(i==0){                 li.style.color = "blue"             }             li.className = "hover"             document.querySelector("ul").appendChild(li)         }         this.disabled = true     }     BOM 概念:

BOM(Browser Object Model) 是指浏览器对象模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象。

 

BOM的*对象

window 是浏览器的*对象 ,当调用window 下的属性的方法时,可以省略

注意:window下一个特殊的属性 window.name = ""    空字符串

  

对话框:

alert()

prompt()

confirm()

加载事件

onload 事件

onload 事件会在页面或图像加载完成后立即发生

onload 通常用于 <body> 元素,在页面完全载入后(包括图片、css文件等等。)执行脚本代码。

 

Location 对象

常用属性:

地址上#及后面的内容

console.log(window.location.hash)

主机名及端口号

console.log(window.location.host);

主机名

console.log(window.location.hostname);

文件的路径---相对路径

console.log(window.location.pathname)

端口号

console.log(window.location.port)

协议

console.log(window.location.protocol)

搜索的内容

console.log(window.location.search)

 

History 对象

跳转

btn.onclick = function(){

window.history.href = "网址";

}

前进

btn2.onclick = function(){

window.history.forward();

}

后退

btn.onclick = function(){

window.history.back();

}

 

Natigator 对象

通过userAgent 可以判断用户浏览器的类型

console.log(window.navigator.userAgent());

通过platfrom 可以判断浏览器所在的系统平台类型

console.log(window.navigator.platfrom)

上一篇:DOM与BOM


下一篇:13、BOM