DOM(上)

63 阅读2分钟

文档对象模型

  • DOM ( Document Object Model):文档对象模型
  • 其实就是操作html中的标签的一些能力
  • DOM的核心对象就是docuemnt对象
  • document对象是浏览器内置的一个对象,里面存储着专门用来操作元素的各种方法
  • DOM页面中的标签,我们通过js获取到以后,就把这个对象叫做DOM对象

document对象

获取html元素

  • getElementById('id属性值')

getElementById是通过标签的id名称来获取标签的,因为在一个页面中 id是唯一的,所以获取到的就是一个元素

<body>
    <div id="box"></div>
    
    <script>
        var box = document.getElementById( 'box')
        console.1og(box) // <div></div>
    </script>
</body>
  • getElementsByClassName('class属性')

getElementsByClassName是用过标签的class名称来获取标签的,因为页面中可能有多个元素的class名称一样,所以获取到的是一组元素,哪怕你获取的class只有一个,那也是获取一组元素,只不过这一组中只有一个DOM元素而已

<body>
    <div calss="box"></div>
    
    <script>
        var box = document.getElementsByClassName(' box')
        console.1og(box) // [<div></div>]
        console.1og(box[0]) // <div></div>
    </script>
</body>
  • getElementsByTagName('标签名')

getElementsByTagName是用过标签的标签名称来获取标签的,因为页面中可能有多个元素的标签名称一样,所以获取到的是一组元素,哪怕真的只有一个这个标签名,那么也是获取一-组元素,只不过这一组中只有一个DOM元素而已

<body>
    <div></div>
    <script>
        var box = document . getElementsByTagName('div' )
        console.1og(box) // [<div></div>]
        console.lo(box[0]) // <div></div>
    </script>
</body>
  • getElementsByName(' name属性')
  • querySelector和querySelectorAll

操作元素内容

  • innerHTML

获取元素内部的HTML结构

<body>
    <div>
        <p>
            <span>he11o</span>
        </p>
    </div>
    
    <script>
        var div = document.queryselector('div')
        console.log(div.innerHTML)
        /*
            <p>
                <span>he11o</span>
            </p>
        */
    </script>
</body>

设置元素的内容

<body>
    <div></div>
    
    <script>
        var div = document.querySelector('div')
        div.innerHTML = '<p>he11o</p>'
    </script>
</body>
  • innerText

获取元素内部的文本(只能获取到文本内容,获取不到html标签)

<body>
    <div>
        <p>
            <span>he11o</span>
        </p>
    </div>
    
    <script>
        var div = document.querySelector('div')
        console.log(div.innerText) // hello
    </script>
</body>

可以设置元素内部的文本

<body>
    <div></div>

    <script>
        var div = document.querySelector('div')
        div.innerText = '<p>he1lo</p>'
    </script>
</body>
  • value

value 表单元素内容

     <input type="text"/>     
  • innerText 和 innerHTML区别:
  1. innerText 以纯文本形式显示

     <h3>innerText设置的内容</h3> 
    
  2. innerHTML

  • 操作非表单元素 innerText 和 innerHTML

  • 操作表单元素 value

操作元素CSS样式

  1. style行内样式

专门用来给元素添加css样式的,添加的都是行内样式

<body>
    <div></div>
    <script>
        var div = document.querySelector('div')
        div.style.width = "100px"
        div.style.height = "100px"
        div.style.backgroundColor = "pink"
        console.log(div)
        // <div style="width: 100px; height: 100px; background-color: pink;"></div>
    </script>
</body>

2. className class类样式

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

<body>
    <div class="box"></div>
    <script>
        var div = document.querySelector(' div')
        console.1og(div.className) // box
    </script>
</body

也可以设置元素的类名,不过是全覆盖式的操作

<body>
    <div class="box"></div>
    <script>
        var div = document.querySelector('div')
        div.className = 'test '
       console.1og(div) // <div class="test"></div>
    </script>
</body>

在设置的时候,不管之前有没有类名,都会全部被设置的值覆盖

  1. classList动态添加移除class类样式

添加样式

dir.aslit,add'active';∈

移除指定样式

drcaslstsreove(active'i.

操作属性

  1. getAttribute('属性名')

获取元素的某个属性(包括自定义属性)

<body>
    <div a="100" class= "box"></div>
    <script>
        var div = document.querySelector(' div')
        console.log(div.getAttribute('a')) // 100
        console.1og(div.getAttribute('class')) // box
    </script>
</body>

2. setAttribute('属性名',"属性值")

给元素设置一个属性(包括自定义属性)

<body>
    <div></div>
    <script>
        var div = document.querySelector(' div')
        div.setAttribute('a', 100)
        div.setAttribute('class', 'box')
        console.1og(div) // <div a="100" class="box"></div>
    </script>
</body>

3. removeAttribute(属性名')

给元素设置一个属性(包括自定义属性)

<body>
    <div></div>
    <script>
        var div = document.querySelector(' div')
        div.setAttribute('a', 100)
        div.setAttribute('class', 'box')
        console.1og(div) // <div a="100" class="box"></div>
    </script>
</body>