Dom知识点整理

111 阅读2分钟

DOM树

b19c3a778095261b5510e5cc4299d1e4.jpeg

image.png

获取元素

ID获取

developer.mozilla.org/zh-CN/docs/…

document.getElementById(id) // id是大小写敏感的字符串
//返回值为一个元素对象

console.dir(document.getElementById(id)) 打印我们返回的元素对象,更好的查看里面的属性和方法

标签名获取

//返回的是 获取过来元素对象的合集
document.getElementsByTagName('标签名');
//如果页面中只有一个元素对象,返回的依旧是伪数组;
//如果页面中没有元素对象,返回的是空伪数组;
获取某个元素(父元素)内部所有指定标签名的子元素
element.getElementsByTagName('标签名')
//父元素必须是单个对象(必须指明是哪一个元素对象),获取的时候不包括父元素自己
方法一:给父元素加id
var ol = document.getElementById('ol'); //给父元素加id
console.log(ol.getElementsByTagName('li')
方法二:
ol[].getElementsByTagName('li')

Html5新增的方法获取(注意兼容性问题)

1document.getElementsByClassName('类名') // 根据类型获取元素
2document.querySelector('选择器'// 返回指定选择器的第一个选项 
//切记里面的选择器需要加符号 .nav #nav
3document.querySelectorAll('选择器'// 返回指定选择器的所有元素对象合集

获取body、html元素

document.body;
document.documentElement;

事件基础

事件三要素:事件源 事件类型 事件处理程序

1、事件源 事件被触发的对象
document.getElementById('');
2、事件类型 如何触发 什么事件 比如鼠标点击(onclick)
3、事件处理程序 通过一个函数赋值的方式完成

btn.onclick = function () {
}

执行事件的步骤

<body>
    <button id = 'btn'>唐伯虎</button>
    <script>
    //1. 获取事件源
    var btn = document.getElementById('btn');
    //2. 绑定事件 注册事件
    //btn.onclick
    //3. 添加事件处理程序
    btn.onclick = function () {
        alert('点秋香')
    }
    </script>
</body>

获取元素节点

1、element.childNodes // 获取当前元素的子节点(会包含空白的子节点)  
2、element.children // 获取当前元素的子元素 
3、element.firstElementChild // 获取当前元素的第一个子元素
4、element.lastElementChild // 获取当前元素的最后一个子元素
5、element.nextElementSibling // 获取当前元素的下一个兄弟元素
6、element.previousElementSibling // 获取当前元素的前一个兄弟元素
7、element.parentNode // 获取当前元素的父节点
8、element.tagName // 获取当前元素的标签名

获取文本节点

DOM中,在网页中所有的文本内容都是文本节点对象
     可以通过元素来获取其中的文本节点对象,但是我们通常不这么做
     我们可以直接通过元素去修改其中的文本
         修改文本三个属性:
             1、element.textContent 获取或修改文本中的文本内容
                 -- 获取的是标签中的内容,不会考虑css样式
             2、element.innerText 获取或修改元素中的文本内容
                 -- 获取内容会考虑css样式
                 -- 通过innerText去读取CSS样式,会触发网页的重排(计算css样式)
             3、element.innerHTML 获取或修改元素中的html的内容
                 --可以直接向元素中添加html代码
                 --有xss注入风险

修改元素

<body>
    <div id="btn01">button1</div>
    <div id="btn02">button2</div>


    <ul id="list">
        <div id="swk">孙悟空</div>
        <div id="zbj">猪八戒</div>
        <div id="shs">沙和尚</div>
    </ul>

    <script>
        // 点击按钮后向ul中添加一个唐僧

        // 获取ul
        const list = document.getElementById('list')

        // 获取按钮
        const btn01 = document.getElementById('btn01')
        btn01.onclick = function () {
            // 创建一个li
            const li = document.createElement("li")
            // 向li添加文本
            li.textContent = '唐僧'
            // 给li添加id属性
            li.id = 'tc'

            //appendChild() 用于给一个节点添加子节点
            // list.appendChild(li) 

            // insertAdjacentElement()可以向元素的任意位置添加元素
            // 两个参数:1.要添加的位置;2.要添加的元素
            // beforeend 标签的最后 afterbegin 标签的开始
            // beforebegin 在元素的前边插入元素(兄弟元素) afterend 在元素的后边插入元素(兄弟元素)
            // insertAdjacentElement('beforeend',li)
        }

        const btn02 = document.getElementById('btn02')
        btn02.onclick = function () {
            //创建一个蜘蛛精替换孙悟空
            const li = document.createElement('li')
            li.textContent = "蜘蛛精"
            li.id = "zzj"

            // 获取swk
            const swk = document.getElementById('swk')
            swk.replaceWith(li)

            //replaceWith() 使用一个元素替换当前元素
            // swk.replaceWith(li)

            // remove() 方法用来删除当前元素
            swk.remove()
        }
    </script>

操作元素之表单属性设置

<body>
    <button>按钮</button>
    <input type="text" value="输入内容">
    <script>
        //1、获取元素
        var btn = document.querySelector('button');
        var input = document.querySelector('input');
        //2、注册事件
        btn.onclick = function () {
            //input.innerHTML = '点击了';这个是普通盒子 比如div标签里面的内容
            //表单里面的值 文字内容是通过value来修改的
            input.value = '被点击了';
            // 如果想把某个表单被禁用 不能再点击disabled
            // btn.disabled = true;
            this.disabled = true;
            // this 指向的是事件函数的调用者 btn
        }
    </script>
</body>

操作元素-修改样式属性

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            background-color: purple;
        }
    </style>
</head>
<body>
    <div></div>
    <script>
        var div = document.querySelector('div')
        div.onclick = function () {
            this.style.backgroundColor = 'pink';
            this.style.width = '300px'
        }
    </script>
</body>