DOM 操作

67 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情

操作元素类名

        我们有两种方式操作元素类名

       按照原生属性操作

      设置类名

          元素.className = 'box'

        修改类名

          元素.className = '新值'

      追加类名

          元素.className = 元素.className + '新类名'

            注意: 新类名前面要有一个 空格

    删除类名

        获取类名

            1. 截取字符串

            2. 按照空格切开, 循环遍历, 找到一个你想删除的删除掉

            3. 再写一遍

//css部分
 div {     
 width: 100%;    
 height: 50px;    
 position: absolute;     
 top: -50px;     
 left: 0;    
 background-color: skyblue;  
 transition: top .5s linear;    }  
 div.box {     
 top: 0;   
 }    
 button {
 margin-top: 100px;  
 }
// 0. 获取元素  
var div = document.querySelector('div');  
// 1-1. 设置类名    
div.className = 'box'// 1-2. 修改类名   
div.className = 'box2'// 1-3. 追加类名     
div.className += ' abc'

H5 标准提供给我们的 API

          元素身上有个属性 classList

      里面包含了所有元素身上设置的类名

          classList 提供了一系列方法来操作

           ** 1. add()**

              使用方法: 元素.classList.add('你要添加的类名')

          ** 2. remove()**

             使用方法: 元素.classList.remove('你要移除的类名')

            3. toggle()

             使用方法: 元素.classList.toggle('你要切换的类名')

              当元素有这个类名的时候, 就删除,反之没有就添加。

// 2-1. 添加类名
div.classList.add('box'); 
// 2-2. 删除类名    
div.classList.remove('h');
// 2-3. 切换类名    
var btn = document.querySelector('button');  
btn.onclick = function () {    
div.classList.toggle('box');  
}
console.log(div.classList);

 操作元素文本内容

          1. innerHTML

      一个读写的属性

      操作元素的超文本内容

      读: 获取元素内部的所有内容,返回方式为字符串形式

        使用方法: 元素.innerHTML

  写: 设置元素内部的超文本内容

        完全覆盖式书写

      使用方法: 元素.innerHTML = '你要设置的内容'(自动解析)

     2. innerText

一个读写的属性

        操作元素的文本内容

    读: 获取子元素内部(包括后代)的所有文本内容

        标签内容不获取

          使用方法: 元素.innerText

      写: 设置元素内部的文本内容

        完全覆盖式的写入

        使用方法: 元素.innerText = '你要设置的值'(不自动解析)

          3. value

一个读写的属性

        操作表单元素的 value 属性

        读: 获取表单元素的 value 值

          使用方法: 元素.value

       写: 设置表单元素的 value 值

      使用方法法: 元素.value = '你要设置的值'

//html结构部分<div>  
hello world   
<p>你好 世界</p>  
hello world 
</div>
  <input type="text">
var div = document.querySelector('div');
var inp = document.querySelector('input');
// 1. innerHTML    
// 1-1. 获取元素的超文本内容  
var str = div.innerHTMLconsole.log(str);    
console.log(typeof str);
    // 1-2. 设置元素的超文本内容  
    div.innerHTML = '<span>我是新来的内容</span>'// 2. innerText   
    // 2-1. 获取元素的文本内容    
    var str = div.innerTextconsole.log(str);
    // 2-2. 设置元素的文本内容  
    div.innerText = '<span>我是新来的内容</span>'// 3. value 属性 
    // 3-2. 设置元素的 value 值    
    inp.value = '你好 世界'// 3-1. 获取元素的 value 值  
    var str = inp.valueconsole.log(str);

 操作元素样式

          1. 行内样式

  style 的方式

          利用原生属性的方式

          元素.style

          获取到的内容是一个对象, 里面包含元素所有的可设置样式

          但是 只能获取到行内样式

          2. 非行内样式

          2-1. window.getComputedStyle() 方法

            标准浏览器

            语法: window.getComputedStyle(要获取样式的元素)

          返回值: 一个对象, 里面包含所有可设置样式, 每一个样式都有值, 那你没有设置的有默认值

          你需要那一个样式, 直接再找个对象里面访问就可以了

          2-2. currentStyle 属性

        IE 低版本

          语法: 要获取样式的元素.currentStyle

            得到的就是一个对象, 里面包含元素的所有可设置样式, 每一个样式都有值

            你需要哪一个样式, 直接再对象里面查找就可以了

 特别说明:

          如果你使用 点语法获取样式

            你获取带有中划线的样式要转化成驼峰的方式

          如果你使用 数组关联语法获取样式

            你可以写中划线

      设置元素 只有一种方式

        设置元素得行内样式

      前端 JS 理论上是不可以设置元素得非行内样式

      设置行内样式

    使用方法: 元素.style.样式名 = '值'