今天松懈将会是你今后的崩溃,DOM的初识

141 阅读5分钟

一、DOM工作原理 :
1.代码从 硬盘 读取 到 内存中
2.生成一颗dom树
dom树 : 网页的内容
dom工作原理: 修改内存中的dom树结构,最终页面渲染也会变化
3.渲染DOM树

二、查询页面元素

  1. document.querySelector('css选择器')
    2. document.querySelectorAll('css选择器')
    3. querySelector 和 querySelectorAll的区别
    3.1 作用不同
    querySelector : 只能找到满足条件第一个元素
    querySelectorAll : 可以找到满足条件所有元素
    3.2 语法不同
    querySelector : 返回值是dom对象, 可以使用dom点语法
    querySelectorAll : 返回值是伪数组, 不可以使用dom点语法。必须要先下标取出dom对象才可以使用dom点语法

    • @description: 获取满足选择器条件第一个元素
    • @param {string} css选择器
    • @return: DOM对象 | null

    三、元素内容操作

    1.元素内容操作 : <标签头> 元素内容 </标签尾>
    1.1 元素.innerText : 获取元素文本
    1.2 元素.innerHTML : 获取元素文本+标签
    1.3 两者区别 : innerText不能解析标签, innerHTML可以解析标签
    2.元素属性操作 : <标签头 元素属性名="属性值" > 元素内容 </标签尾>
    3.元素样式操作 : <标签头 style="样式名:样式值" > 元素内容 </标签尾>

        任何属性操作前提: 要先获取元素
          1. 元素.innerText
          2. 元素.innerHTML
          3. innerTextinnerHTML区别
          3.1  innerText : 无法解析字符串中的 html标签
          3.2 innerHTML : 可以解析 字符串中的html标签
    

    四、元素属性操作

    <标签头 元素属性名="属性值" style="样式名:样式值" > 元素内容 </标签尾>

     1.元素内容操作 :  
         1.1 元素.innerText : 获取元素文本
         1.2 元素.innerHTML : 获取元素文本+标签
         1.3 两者区别 :  innerText不能解析标签, innerHTML可以解析标签
    
     2.元素属性操作 :   元素.属性名
       元素.href  : a标签的链接
       元素.src   : img标签的图片路径
    
     3.元素样式操作 : 
     
    

五、元素style操作样式
<标签头 元素属性名="属性值" style="样式名:样式值" > 元素内容 </标签尾> 1.元素内容操作 :
1.1 元素.innerText : 获取元素文本 1.2 元素.innerHTML : 获取元素文本+标签 1.3 两者区别 : innerText不能解析标签, innerHTML可以解析标签

    2.元素属性操作 :   元素.属性名
      元素.href  : a标签的链接
      元素.src   : img标签的图片路径

    3.元素样式操作 :  
        3.1 通过style属性操作 :  元素.style.样式名 = 样式值
            (1)style方式权重是: 行内权重
            (2)有-的属性需要去掉-,后面的首字母大写
            
            元素任何属性操作前提: 获取元素
            获取
             /* 由于css的命名规则 与 js命名规则 不一致,所以css的样式和js样式也有区别 
    凡是带-的样式,例如 border-  margin- font-,在js中需要转成小驼峰命名
        (1)去掉-  (2)-后面的首字母大写
    */
    

六、元素className操作样式

<标签头 元素属性名="属性值" style="样式名:样式值" > 元素内容 </标签尾>

    1.元素内容操作 :  
        1.1 元素.innerText : 获取元素文本
        1.2 元素.innerHTML : 获取元素文本+标签
        1.3 两者区别 :  innerText不能解析标签, innerHTML可以解析标签

    2.元素属性操作 :   元素.属性名
      元素.href  : a标签的链接
      元素.src   : img标签的图片路径

    3.元素样式操作 :  
        3.1 通过style属性操作 :  元素.style.样式名 = 样式值
            (1)style方式权重是: 行内权重
            (2)有-的属性需要去掉-,后面的首字母大写

        3.2 通过className操作类名(了解) :  元素.className = '类名'
            (1)元素类名是className, 而不是class(因为class是js关键字)
            (2)className修改类名, 会覆盖以前的类名

        3.3 通过classList操作类名(掌握)
        
        1.获取类名 : 元素.className
    由于class是js中的关键字,所以获取类名需要用className
    
       2.设置类名
    如果元素以前有类名,会被覆盖
    

七、元素classList操作样式
<标签头 元素属性名="属性值" style="样式名:样式值" > 元素内容 </标签尾>

    1.元素内容操作 :  
        1.1 元素.innerText : 获取元素文本
        1.2 元素.innerHTML : 获取元素文本+标签
        1.3 两者区别 :  innerText不能解析标签, innerHTML可以解析标签

    2.元素属性操作 :   元素.属性名
      元素.href  : a标签的链接
      元素.src   : img标签的图片路径

    3.元素样式操作 :  
        3.1 通过style属性操作 :  元素.style.样式名 = 样式值
            (1)style方式权重是: 行内权重
            (2)有-的属性需要去掉-,后面的首字母大写

        3.2 通过className操作类名(了解) :  元素.className = '类名'
            (1)元素类名是className, 而不是class(因为class是js关键字)
            (2)className修改类名, 会覆盖以前的类名

        3.3 通过classList操作类名(掌握)
            (1)新增类名:  元素.classList.add( '类名' )
            (2)删除类名:  元素.classList.remove( '类名' )
            (3)切换类名:  元素.classList.toggle( '类名' )
                切换: 有则移除,无则新增
            (4)判断类名:  元素.classList.contains( '类名' )
                true:有类名  false:没有
                
         (1)新增类名:  元素.classList.add( '类名' )
         (2)删除类名:  元素.classList.remove( '类名' )
         (3)切换类名 :元素.classList.toggle( '类名' )
         判断类名
         console.log( box.classList.contains( 'two' ) )//打印返回值   true:有
         

八、表单的常用属性

html中的表单元素有一种非常特殊的布尔类型属性, 用于表示表单的状态.
disabled : 是否禁用
checked : 是否选中 (radio标签和checkbox标签)
selected : 是否选中 (option标签)

      表单元素特殊属性
   
   1.表单内容 : 表单元素.value

   2.表单布尔类型属性
    表单元素.disabled   : 是否禁用
    表单元素.checked   : 是否选中 (单选+多选)
    表单元素.selected   : 是否选中(下拉菜单)
    
    

九、事件及注册事件

0.交互功能 : 什么元素 在什么时候 做什么事情
1.事件技术 : 实现交互功能

  2.事件三要素
    事件源 :  什么元素
    事件类型 : 什么时候   鼠标点击、移入
    事件处理 : 做什么事情

  3.注册事件 : 事件源.事件类型 = 事件处理函数

  4.事件工作原理 :
    4.1 事件在注册的时候,不会执行。 ( 函数在声明的时候不会执行的 )
    4.2 要想执行事件处理函数,只有两种方式
      (1)用户触发交互,浏览器自动调用
      (2)主动触发:  事件源.事件类型()
      
      对元素进行任何属性操作前提: 获取元素
  let box = document.querySelector('.box')
  //给 box添加事件
  //1.鼠标点击事件
  box.onclick = function(){
    box.style.backgroundColor = 'green'
  }

  //2.鼠标双击事件
  box.ondblclick = function(){
    box.style.backgroundColor = 'pink'
  }

  //3.鼠标移入
  box.onmouseenter = function(){
    box.style.backgroundColor = 'purple'
  }

  //4.鼠标离开
  box.onmouseleave = function(){
    box.style.backgroundColor = 'skyblue'
  }
  

十、获取元素的其他方式

   //1.根据id名获取元素
   let btn = document.getElementById('btn')
   console.log(btn)//dom对象
   
    //2.根据标签名获取元素
    let liList = document.getElementsByTagName('li')
    console.log( liList )
    

    //3.根据类名获取元素
    let box = document.getElementsByClassName('box')
    console.log( box )
    

    //4.根据name值获取表单元素
    let genderList = document.getElementsByName('gender')
    console.log(genderList)