Web APIs 第一天

167 阅读4分钟

Web APIs 第一天

基本认知

作用:就是使用 JS 去操作 html 和浏览器 分类:DOM (文档对象模型)、BOM(浏览器对象模型)

DOM

DOM(Document Object Model——文档对象模型)是用来呈现以及与任意 HTML 或 XML文档交互的API 白话文:DOM是浏览器提供的一套专门用来 操作网页内容 的功能 DOM作用:开发网页内容特效和实现用户交互

DOM树

将 HTML 文档以树状结构直观的表现出来,我们称之为文档树或 DOM 树 描述网页内容关系的名词 作用:文档树直观的体现了标签与标签之间的关系

DOM对象(重要)

DOM对象:浏览器根据html标签生成的 JS对象 所有的标签属性都可以在这个对象上面找到 修改这个对象的属性会自动映射到标签身上

DOM的核心思想:把网页内容当做对象来处理

document 对象 是 DOM 里提供的一个对象 所以它提供的属性和方法都是用来访问和操作网页内容的 网页所有内容都在document里面

获取DOM对象
获取单个元素

查找元素DOM元素就是选择页面中标签元素

语法

    <script>
        document.querySelector('css选择器')
    </script>

参数 包含一个或多个有效的CSS选择器 字符串

返回值: CSS选择器匹配的 第一个 元素,一个 HTMLElement对象。 如果没有匹配到,则返回null。

    <script>
        document.querySelector('div')
        console.dir(document.querySelector('div'))
    </script>

查看控制台,使用console.dir

获取多个元素

语法

    <script>
        document.querySelectorAll('css选择器')
    </script>

参数 包含一个或多个有效的CSS选择器 字符串

返回值

有长度有索引号的数组,伪数组 想要得到里面的每一个对象,则需要遍历(如 for)的方式获得 如果没有匹配到,则返回[] 哪怕只有一个元素,通过querySelectAll() 获取过来的也是一个伪数组,里面只有一个元素而已

    <script>
        document.querySelectorAll('li')
        console.dir(document.querySelectorAll('li'))
    </script>

其他获取DOM元素方法(了解)

    <script>
        //根据id获取一个元素
        document.getElementById('nav')
        //根据 标签获取一类元素,输出伪数组
        document.getElementsByTagName('div')
        //根据 类名获取一类元素,所有类名为“w”输出伪数组
        document.getElementsByClassName('w')
    </script>
设置/修改DOM元素内容

DOM对象都是根据标签生成的,所以操作标签,本质上就是操作DOM对象。 就是操作对象使用的点语法。

如果想要修改标签元素的里面的内容,则可以使用如下几种方式: document.write() 方法 对象.innerText 属性 对象.innerHTML 属性

document.write()

只能将文本内容追加到 前面的位置 文本中包含的标签会被解析

    <script>
        //永远都只是追加操作,且只能位置</body>前
        document.write(`hello`)
        document.write(`<h1>大家好</h1>`)
    </script>
对象.innerText

将文本内容添加/更新到任意标签位置 文本中包含的标签不会被解析

<body>
    <div></div>
    <script>
        let divDom = document.querySelector('div')
        divDom.innerText = '你好'
    </script>
</body>
对象.innerHTML

将文本内容添加/更新到任意标签位置 文本中包含的标签会被解析

<body>
    <div></div>
    <script>
        let div = document.querySelector('div')
        div.innerHTML = '你好<button>厉害</button>'
    </script>
</body>
案例1

随机抽取的名字显示到指定的标签内部 需求:将名字放入span 盒子内部

<body>
    <span></span>
    <script>
        let userName = ['鸭','鸡','猪','马','牛']
        let num = Math.round(Math.random()*(userName.length - 1))
        let spanDom = document.querySelector('span')
        spanDom.innerHTML = `${userName[num]}`
    </script>
</body>
设置/修改DOM元素属性
设置/修改元素常用属性

还可以通过 JS 设置/修改标签元素属性,比如通过 src更换 图片 最常见的属性比如: href、title、src 等 语法:

    <script>
        对象.属性 = 值
    </script>

举例

<body>
    <img src="" alt="">
    <script>
       let images = document.querySelector('img')
       images.src = './imgae/微信图片_20220403155151.png'
       images.alt = '可以可以'
    </script>
</body>
案例2

需求:当我们刷新页面,页面中的图片随机显示不同的图片

<body>
    <img src="" alt="">
    <script>
        let images = ['./imgae/微信图片_20220403155151.png','./imgae/微信图片_20220403155319.png','./imgae/微信图片_20220403155325.png','./imgae/微信图片_20220403155330.png']
       let image = document.querySelector('img')
        let num = Math.round(Math.random() * (images.length - 1))
        image.src = `${images[num]}`
    </script>
</body>
设置/修改元素样式属性

还可以通过 JS 设置/修改标签元素的样式属性。 比如通过 轮播图小圆点自动更换颜色样式 点击按钮可以滚动图片,这是移动的图片的位置 left 等等

通过 style 属性操作CSS 操作类名(className) 操作CSS 通过 classList 操作类控制CSS

1.通过 style 属性操作CSS

语法

    <script>
        对象.style.样式属性 = 值
    </script>

举例

<body>
    <div class="box"></div>
    <script>
        let box = document.querySelector('.box')
        box.style.backgroundColor = 'red'
        box.style.height = '300px'
        box.style.marginTop = '100px'
    </script>
</body>

案例3

需求:当我们刷新页面,页面中的背景图片随机显示不同的图片

    <script>
        let imgs = ['./imgae/微信图片_20220403155330.png','./imgae/微信图片_20220403155325.png','./imgae/微信图片_20220403155319.png','./imgae/微信图片_20220403155151.png']
        let num = Math.round(Math.random() * (imgs.length - 1))
        let bodyBom = document.querySelector('body')
        bodyBom.style.backgroundImage = `url(${imgs[num]})`
    </script>

2.操作类名(className) 操作CSS

如果修改的样式比较多,直接通过style属性修改比较繁琐,我们可以通过借助于css类名的形式。

    <script>
        元素.className = 'active'
    </script>

注意 由于class是关键字, 所以使用className去代替 className是使用新值换旧值, 如果需要添加一个类,需要保留之前的类名

3.通过 classList 操作类控制CSS

为了解决className 容易覆盖以前的类名,我们可以通过classList方式追加和删除类名

<body>
    <div class="b1"></div>
    <script>
        //添加方法
        let divDom = document.querySelector ('div')
        divDom.classList.add("b4","b3","b2","b1");//增加类
        divDom.classList.remove("b2","b4")//删除类
        divDom.classList.toggle ("b6")//本来就有,就移除,本来没有,就增加
    </script>
</body>
定时器函数

网页中经常会需要一种功能:每隔一段时间需要自动执行一段代码,不需要我们手动去触发

1.开启定时器

    <script>
        setInterval(函数,时间)
    </script>

举例

    <script>
        setInterval(function repeat(){
            console.log('你真好')
        },1000)
    </script>

匿名函数

    <script>
        setInterval(function () {
            console.log('你真好')
        },1000)
    </script>

2.关闭定时器

    <script>
        //一般不会刚创建就停止,而是满足一定条件再停止
        let num = setInterval(function(){
            console.log('你好')
        },1000)
        clearInterval(num)
    </script>

举例

    <script>
        let index = 0
        let timeId = setInterval(function(){
            index++
            console.log("想笑啊")
            if(index === 20){
                clearInterval(timeId)
            }
        },1000)
    </script>