Web API/v1.0

148 阅读2分钟

获取dom对象

获取单个dom元素

querySelector只能获取第一个符合要求的标签

如果选择器找不到元素querySelector就会返回null

通过以下代码获取

选择器写法跟css一样

document.querySelector(选择器)

打印不再是console.log()

而是dir

console.dir()

获取多个dom元素

querySelectorAll返回值为一个数组,找不到元素那么也会返回一个空数组

    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
<script>
        //返回值为数组
        let num = document.querySelectorAll('li')
        for (let index = 0; index < num.length; index++) {
            num[index].innerText = `这是标签` + index
        }
    </script>

输出:

image-20220403145047619

动态修改文本内容

innerText只能修改文本

innerHTML可以修改文本也可以修改标签

<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>
    <script>
        document.querySelector('li:nth-child(4)').innerText = '不好吗'
        document.querySelector('li:nth-child(2)').innerHTML = '<button>你好</button>'
    </script>
</body>

输出:

image-20220403152731362

动态修改元素样式

获得标签.style.要修改的属性(注意大小写)='修改的值'

<body>
    <div>演示</div>
    <script>
        let div = document.querySelector('div')
        div.style.fontSize = '100px'
    </script>
</body>

添加、切换、删除类

以为在js里面写css样式会比较麻烦

所以可以在css文件先写好,再在js里面添加类名即可

<body>
    <div>1</div>
    <script>
        let div = document.querySelector('div')
        //添加类
        div.classList.add('a1', 'a3')
        //移除类
        div.classList.remove('a1')
        //切换类,如果原来就有这个类名那么它就是移除,否则就是添加类
        div.classList.toggle('a2')
    </script>
</body>

定时器

setInterval

setInterval(函数,定时 时间)

定时器关闭

 clearTimeout(定时器ID)

匿名函数定时器

setInterval(function () {
            console.log('你好');
        }, 1000)

事件

事件三要素

获取dom元素、事件类型、事件触发后需要做的动作(函数

addEventListener

案例,鼠标单击后触发函数里面的弹窗

 btn.addEventListener('click', function () {
            alert('滚')
        })

获取父节点

子节点.parentNode

案例

点击子元素span隐藏父元素div

通过parentNode找到父元素,给父元素设置隐藏

<body>
    <div>
        父元素
        <span>关闭父元素</span>
    </div>
    <script>
        let span = document.querySelector('span')
        span.addEventListener('click', function () {
            span.parentNode.style.display = 'none'
        })
    </script>
</body>

获取子节点

children

获取元素节点

返回一组伪数组

案例

点击父元素隐藏子元素

  <script>
        //获取父元素ul
        let uls = document.querySelectorAll('ul')
        //遍历父元素的长度
        for (let index = 0; index < uls.length; index++) {
            //给每个父元素绑定点击事件
            uls[index].addEventListener('click', function () {
                //点击后获取this,this就是ul元素
                //然后拿ul找到子元素(children这个方式)的长度,遍历它
                for (let i = 0; i < this.children.length; i++) {
                    //ul的每一个子元素都设置隐藏
                    this.children[i].style.display = 'none'
                }
            })
        }
    </script>

兄弟元素获取

previousElementSibling

nextElementSibling

创建节点/追加

创建一个li

document.createElement

let li = document.createElement('li')

插入标签

父元素.appndChild(需要添加的元素)

appendChild,加到元素后面

ul.appendChild(li)

inserBefore

父元素.inserBefore(要插入的元素,要插入在那个元素的前面)

inserBefore案例

把left li 3剪切到right li b上面

<body>
    <ul class="left">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
    </ul>
    <ul class="right">
        <li>a</li>
        <li>b</li>
    </ul>
    <script>
        let right = document.querySelector('.right')
        let b = document.querySelector('.right li:nth-child(2)')
        let num = document.querySelector('.left li:nth-child(3)')
        right.insertBefore(num, b)
    </script>
</body>

输出:

image-20220406180718321

补充

createTextNode可以创建文本节点

let text = document.createTextNode = '使用'

append可以连续插入多个标签

div.append(span1, text1, span2, text2)