JavaScript 回顾(七)

182 阅读3分钟

这是我参与更文挑战的第30天,活动详情查看: 更文挑战

1, 什么是DOM

DOM 全称Document Object Model文档对象模型,JS中通过DOM来对HTML文档进行操作,只要理解了DOM就可以随心所欲的操作WEB页面

  • 文档表示的就是整个HTML网页文档
  • 对象表示将网页中的每一个部分都转换为了一个对象
  • 模型用来表示对象之间的关系,方便我们获取

2, 什么是节点

节点Node, 是构成网页的最基本的组成部分,网页中的每一个部分都是一个节点。比如:html标签,属性,文本,注释,整个文档等都是第一个节点,虽然都是节点,但是他们实际上具体类型是不同的。

比如:标签:我们称为元素节点

属性:我们称为属性节点

文本:我们称为文本节点

文档:我们称为文档节点

节点的类型不同,属性和方法也都不仅相同

节点的属性:

3, document

浏览器已经为我们提供文档节点对象,这个对象就是window属性。我们可以在页面直接使用,文档节点代表的是整个网页

// 获取button对象
var btn = document.getElementById("btn")
// 修改按钮文字
btn.innerHTML =  "zlm"
console.log(btn)

(1) 事件

事件就是文档或浏览器窗口中发生的一些特定的交互瞬间,JavaScript和HTML之间的交互是通过事件实现的。

// 获取button对象
var btn = document.getElementById("btn")
// 绑定一个单击事件
btn.ondblclick = function() {
    alert('aa')
}

4, 文档加载

浏览器在加载一个页面时是按照自上向下的顺序执行的,读取一行就运行一行,如果将JavaScript标签写在页面的上边,在代码执行时,页面还没有加载,就会报错,将JS代码编写到页面的下部就是为了可以在页面加载完毕以后在执行JS代码。

方案一:
JS代码写在下面
方案二:
window.onload = function() {
   alert('hello')
}

5, DOM查询

下面都是通过document调用

(1) 通过id属性获取一个元素节点对象

document.getElementById()

(2) 通过标签名获取一组元素节点对象

document.getElementsByTagName()

(3) 通过name属性获取一组元素节点对象

doucment.getElementsByName()

(4) innerHTML

innerHTML用于获取元素内部的HTML代码,对于自结束标签,这个属性没有意思。如果需要读取元素节点属性,直接使用 元素.属性名

例子: 元素.id 元素.name 元素.value

注意: class属性不能采取这种方式,读取class属性时需要使用元素.className

inputs[i].className

(5) 图片切换

window.onload = function() {
   var prev = document.getElementById('prev')
   var next = document.getElementById('next')
   var img = document.getElementsByTagName('img')[0];
   var imgArr = ["img/1.jpg", “img/2.jpg], "img/3.jpg"]
   var index = 0
   prev.onclick = function() {
        index--;
        if (index < 0) {
           index = 4
        }
        img.src = imgArr[index]
   }
   next.onclick = function() {
        index++;
        if (index > imgArr.length -1) {
           index = 0
        }
        img.src = imgArr[index]
   }
}

6, 获取元素节点的子节点

下面都是通过元素节点调用

(1) 返回当前节点的指定标签名后代节点

getElementsByTagName()

(2) 表示当前节点的所有子节点

childNodes属性会包括文本节点所在的所有子节点,而且DOM标签之间的空白也会当成文本节点

childNodes

(3) children属性可以获取当前元素的所有子元素

chiildren

(4) 表示当前节点的第一个子节点

firstChild

firstElementChild : 表示获取当前元素的第一个子元素

(5) 表示当前节点的最后UI一个子节点

lastChild

7, 获取父节点和兄弟节点

通过具体的节点调用

(1) 表示当前节点的父节点

parentNode

(2) 表示当前节点的前一个兄弟节点

previousSibling

(3) 表示当前节点的后一个兄弟节点

nextSibling

注意:元素:

元素:bj.innerHTML  == 文本节点: bj.firstChild.nodeValue