chapter1:JavaScript简史

  1. 标准化的DOM技术由W3C提出来的。

chapter2:JavaScript语法

chapter3:DOM

1.DOM简介
  1. D:D即为和网页文档相对应的文档对象。
  2. O:JS中的对象分为三种类型。
    1. 用户自定义对象
    2. 内置对象,JS语言提供的,比如说Array、Math
    3. 宿主对象:由浏览器提供的对象,比如说window
  3. M:模型,DOM将一个网页文档表示为一棵树。树的根节点为html元素
2.节点

节点分为元素节点、文本节点、属性节点、注释节点

3.常用方法
  1. getElementById()方法:根据id属性值获取元素对象
  2. getElementsByTagName()方法:根据标签名获取节点,返回一个数组
  3. getAttribute()方法:根据标签的属性获取对应的值
  4. setAttribute()方法:修改属性节点的值

chapter4:JS美术馆

  1. childNodes属性:包含给定元素节点的全体子元素
  2. document.body:获取body元素的简便的方式
  3. 页面加载时执行:指定onload事件的回调
window.onload = function countBodyChildren() {
    alert(document.body.childNodes.length)
}
  1. nodeType属性:用于区分文档里的各个节点的类型
元素节点:nodeType属性值为1
属性节点:nodeType属性值为2
文本节点:nodeType属性值为3
  1. nodeValue属性:用于读写文本节点的值
<h1 id="test">test</h1>
window.onload = function countBodyChildren() {
    // 获取h1元素的文本
    const element = document.getElementById("test")
        // h1元素的文本是h1元素的第一个子节点
    let value = element.childNodes[0].nodeValue
    alert(value)
}
  1. firstChild属性:第一个子节点
  2. lastChild属性:最后一个子节点
  3. parentNode:节点的父元素
  4. nextSilbling属性:兄弟节点

chapter5:JS编程原则和良好习惯

  1. 创建新的浏览器窗口:使用window.open()方法
    1. 参数1:url,表示在新窗口打开的那份文档的URL地址
    2. 参数2:新窗口的名字
    3. 最后一个参数是一个以逗号分隔的字符串,内容为新窗口的各种属性。比如说新窗口的宽高
  2. 什么叫做预留退路:需要考虑到一些用户的浏览器禁用了JS脚本,所以需要编写与这种情景相应的程序。
  3. 浏览器嗅探技术:通过JS代码检索关于浏览器品牌和版本的信息
  4. 向后兼容性:在JS编码中需要考虑向后兼容性。常用的方法是对象检测,在使用DOM的某个方法之前,检查用户所使用的浏览器是否支持该方法。

chapter7:动态创建HTML内容

  1. document.write()方法:将字符串插入文档里
<script>
    document.write("<h1>测试</h1>")
</script>
  1. innerHTML属性:用来读写某个给定元素里的HTML内容
<div id="root">
    <h1>测试</h1>
</div>
<script>
    const element = document.getElementById("root")
    console.log(element.innerHTML) //<h1>测试</h1>
</script>
  1. createElement()方法:创建一个新的元素节点
  2. appendChild()方法:将新创建的节点插入到文档的节点树上,使得它成为这个文档的某个现有节点的一个子结点。
<div id="root">
</div>
<script>
    let element = document.getElementById('root')
    let h1Element = document.createElement('h1')
    h1Element.innerHTML = '<h3>这是测试文本</h3>'
    element.appendChild(h1Element)
</script>
  1. createTextNode()方法:创建一个新的文本节点
// 给h1元素添加文本
let h1Element = document.createElement('h1')
const textNode = document.createTextNode("haha")
h1Element.appendChild(textNode)
  1. insertBefore()方法:将一个新元素插入到现有的元素前面

chapter9.DOM读写CSS信息

  1. DOM中的每个元素节点都包含一个属性style,style属性包含着元素的样式信息。使用style属性的缺点是只能检索内联样式
<div id='box' style="width: 100px; height: 100px; background-color: aqua;">

</div>
<script>
    window.onload = function() {
        const box = document.getElementById('box')
        // 设置样式信息
        box.style.backgroundColor = 'red'
    }
</script>
  1. 使用DOM元素节点设置的样式信息可以使用style属性检索出来。因此可以用来改变各种HTML元素的样式
  2. className属性:DOM中的元素节点的class属性值
    1. 改变某个元素的样式
    <style>
        .box1 {
            width: 100px;
            height: 100px;
            background-color: aqua;
        }
        
        .box2 {
            width: 50px;
            height: 50px;
            background-color: red;
        }
    </style>
    <div class="box1"></div>
    <script>
        window.onload = function() {
            const element = document.getElementsByClassName('box1')
            element[0].className = 'box2'
        }
    </script>
    
    1. 为某个元素增加样式
    <style>
        .box1 {
            width: 100px;
            height: 100px;
            background-color: aqua;
        }
        
        .box2 {
            font-size: 100px;
        }
    </style>
    <div id="box" class="box1">TEST</div>
    <script>
        window.onload = function() {
            const element = document.getElementById('box')
            console.log(element)
                // 不存在类属性
            if (!element.className) {
                element.className = 'box2'
            } else {
                // 存在类属性则添加
                element.className += ' box2'
            }
        }
    </script>
    

chapter10.JS实现动画效果

  1. 动画:让元素的位置随着时间不断地发生变化
  2. setTimeout函数:在指定的时间后执行某个函数
  3. clearTimeout函数:取消执行尚未执行的在等待执行的队列里头的函数

chapter12.展望DOM脚本编程技术

1.Ajax技术

局部刷新,异步请求

  1. XMLHttpRequest对象的创建
const xhr = new XMLHttpRequest() 
  1. 初始化一个请求:使用open方法
// method指定请求的类型
// url表示发送请求的URL
// async表示是否异步执行操作
open(method, url, async);
  1. 对服务器的响应做相应的处理,比如说接收响应的数据:为XMLHttpRequest对象的onreadystatechange事件绑定事件处理函数。
xhr.onreadystatechange = function() {
    // readyState属性的值随着服务器对请求的处理进度变化
    if (xhr.readyState === 4) {
        // 对响应的数据进行处理
    }
}
  1. 发送请求,使用send方法