21 JS中DOM的基本操作之操作属性

82 阅读3分钟

操作属性

  • 概念:我们获取到元素以后,可以直接操作 DOM 的属性,然后直接把效果展示在页面

1. innerHTML

  • 获取元素内部的 HTML 结构
  • 我们也可以直接给这个属性重新赋值,达到修改页面的效果

2. innerText

  • 获取元素内部的 文本(只能获取到文本,获取不到html标签)
  • 我们也可以直接给这个属性重新赋值,达到修改页面的效果 这里先写一段标签,方便后续获取
<div id="box">
    <p>
      <span>我是span</span>
    </p>
</div>
    //获取div标签
    var oDiv = document.querySelector('#box')
    console.log(oDiv)
    //获取元素内部的 HTML 结构
    console.log(oDiv.innerHTML)
    //给获取到的HTML结构重新赋值,达到修改页面的效果
    oDiv.innerHTML = '<p><span>这个文本是通过JS来设置的</span></p>'

    //获取元素内部的 文本
    console.log(oDiv.innerText)
    //给获取到的 文本 重新赋值
    oDiv.innerText = '这个文本是通过JS来设置的'

3.操作元素属性

<div class="box" a="100"></div>

3.1 获取元素的某些属性

  • 语法: 元素.getAttribute('要查询的属性名')
  • 返回值:查询到属性时返回对应的属性值,没有查询到时直接返回 null

3.2 修改元素的某些属性

  • 语法: 元素.setAttribute('对应的属性名','对应的属性值')
  • 注意: 如果元素没有对应的属性名,那么相当于是新增一个属性

3.3 删除元素的某些属性

  • 语法: 元素.removeAttribute('要删除的属性名')
    //先获取元素
    var oDiv = document.querySelector('.box')
    console.log(oDiv) //获取到的是元素节点
    
    //3.1 获取元素的某些属性
    console.log(oDiv.getAttribute('a')) // 100
    console.log(oDiv.getAttribute('class')) //box
    console.log(oDiv.getAttribute('b'))//null
    
    //3.2 修改元素的某些属性
    oDiv.setAttribute('a','888')
    oDiv.setAttribute('b','qwer')
    oDiv.setAttribute('class','box2')
    console.log(oDiv.getAttribute('a')) //888
    console.log(oDiv.getAttribute('b')) // qwer
    console.log(oDiv.getAttribute('class')) // box2
     
    //3.3 删除元素的某些属性
    oDiv.removeAttribute('class')
    oDiv.removeAttribute('a')

3.4标签本身自带的属性,比如 id src type 之类的属性

  • 获取: 元素.属性名
  • 设置: 元素.属性名 = '属性值'
<div id="box">div 标签</div>
//获取元素
var box = document.querySelector('div')
//修改元素属性
box.id = 'content'

4. h5自定义属性的增(改)删查

<div data-a="100"></div>
  • data- 表示该属性是一个自定义属性
  • data- 后边的内容才是属性名,当前案例中属性名为 a,不是 data-a
  • = 后边的内容是属性值
  • 每一个 元素/DOM节点 天生自带一个属性叫做 dataset,是一个类似对象的数据结构
    //0.获取标签
    var oDiv = document.querySelector('div')

    //1.访问元素的dataset属性    查询
    console.log(oDiv.dataset.a) // 100

    //2.增加一个 h5 自定义属性
    oDiv.dataset.age = 18 // 标签中没有这个自定义属性,所以是新增
    oDiv.dataset.a = 888  //这个是标签中有这个自定义属性,相当于作了修改操作

    //3.删除
    delete oDiv.dataset.a

5. 获取元素行内样式

<div class="box" style="background-color: blue;width="100px";height="100px" "></div>
  • 语法:元素.style.某个属性
  • 注意:
  • 我们也可以给这个语法重新赋值,达到修改元素样式的效果(修改的是行内样式)
  • 这种语法获取到的元素样式,只能获取到行内样式
    var oDiv = document.querySelector('.box')
    //1.获取元素样式
    console.log(oDiv.style.width)
    console.log(oDiv.style.height)
    // console.log(oDiv.style.background-color) //直接这样写相当于写了一个 oDiv.style.background - color,这是一个错误写法
    console.log(oDiv.style['backgroundColor']) // 中括号语法
    console.log(oDiv.style.backgroundColor) // 驼峰命名

    //2.设置元素样式
    oDiv.style.width = 666 + 'px'
    oDiv.style.backgroundColor = 'pink'

6. 获取元素 非行内样式

  • 语法: window.getComputedStyle(元素).要查询的css属性
  • 注意: 这种方式获取到的属性 是只读的,不允许修改
    console.log(window.getComputedStyle(oDiv).width)
    console.log(window.getComputedStyle(oDiv).backgroundColor)

7. 专门用来操作元素的 类名

7.1 className

  • 语法:元素.className
  • 我们也可以给她重新赋值,达到修改元素的类名
    oDiv.className = 'box1'
    console.log(oDiv.className) // box1

7.2 classList

<div class="box new_box"></div>
    //0. 获取元素
    var oDiv = document.querySelector('.box')
    //console.log(oDiv.className)
    //oDiv.className = 'qwer'

    //2.1 获取
    console.log(oDiv.classList)

    //2.2 新增
    oDiv.classList.add('qwer')

    //2.3 删除
    oDiv.classList.remove('new_box')