web API第一天笔记

135 阅读4分钟

Web API基本认知

作用和分类

作用:

就是使用JS去操作html和浏览器

分类:

DOM(文档对象模型),BOM(浏览器对象模型)

1649033280420

什么是DOM

DOM(Document Object Model------文档对象模型)是用来呈现以及任意HTML或XML文档交互的API

白话文:DOM是浏览器提供的一套专门用来操作网页内容的功能

DOM作用:开发网页内容特效和实现用户交互

DOM树

DOM数是什么:

将HTML文档以树状结构直观的表现出来,我们称之为文档树或者DOM树

描述网页内容关系的名词

作用:文档树直观的体现了标签与标签之间的关系

1649033870692

DOM对象(重要)

DOM对象:浏览器根据html标签生成的JS对象

所有是标签属性都可以在这个对象上面找到

修改这个对象的属性会自动映射到标签身上

DOM的核心思想

把网页内容当作对象来处理

document对象

是DOM里提供的一个对象

所以它提供的属性和方法都是用来访问和操作网页内容的 例:document.write()

网页所有内容都在document里面

获取DOM对象

选择匹配的第一个元素document.querySelector('css选择器')

注意:括号里必须是字符串,必须加引号

作用:选择匹配的第一个元素

语法:document.querySelector('css选择器')

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

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

<body>
    <div>1234556</div>
    <script>
let inpuDom = document.querySelector('div')
console.dir(inpuDom)
    </script>
</body>

选择匹配的多个元素document.querySelectorAll('选择器')

作用:选择匹配的多个元素

语法:document.querySelectorAll('选择器')

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

返回值:css选择器匹配的NodeList对象集合,伪数组

伪数组:

有长度有索引号的数组

但是没有 pop() push() 等数组方法

想要得到里面的每一个对象,则需要遍历(如for)的方法获得

没有获取到对象会返回一个空伪数组

<body>
    <ul>
        <li>0</li>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>
    <script>
        let lis = document.querySelectorAll('li')
        //获取多个元素的使用,lis是一个伪数组
        for (let index = 0; index < lis.length; index++) {
            lis[index].innerText = `这是第${index}个`
        }
        console.log(lis);
        //没有获取到对象会返回一个空伪数组
        let lis1 = document.querySelectorAll('div')
        console.log(lis1);
    </script>
</body>

其他方式获取DOM元素的方法

1649149309035

设置修改DOM元素内容

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

就是操作对象使用的点语法。

document.write()

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

元素innerText属性

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

元素.innerHTML属性

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

<body>
    <ul>
        <li></li>
        <li></li>
        <li></li>
    </ul>
    <script>
        //以后用的少,只能把标签写在/body 标签上面
        document.write(`<button>1</botton>`)
//只能设置文本不能解析字符串
        document.querySelector('li:nth-child(2)').innerText = `<button>随便</button>`
        //**可以设置文本,也可以解析字符串
        document.querySelector('li:nth-child(3)').innerHTML = `<button>随便</button>`
    </script>
</body>

1649150060198

设置修改元素常用属性

l还可以通过 JS 设置/修改标签元素属性,比如通过 src更换 图片

最常见的属性比如: href title src等

语法:对象.属性 = 值

1649150296842

设置修改元素样式属性

通过style属性操作css

语法:对象.style.样式属性 = 值

<body>
    <div>12124234</div>
    <script>
        //1获取元素
        let div = document.querySelector('div')
        //2开始修改
        div.style.fontSize='100px'
        div.style.color='yellow'
        div.style.backgroundColor='pink'
        div.style.height='200px'
    </script>
</body>

注意:

1.修改样式通过style属性引出

2.如果属性有-连接符,需要转换为小驼峰命名法

3.赋值的时候,需要的时候不要忘记加css单位

操作类名(className)操作css

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

语法: 元素.className = 'active' //active是一个css类名

注意

1.由于class是关键字, 所以使用className去代替

2.className是使用新值换旧值, 如果需要添加一个类,需要保留之前的类名

 <style>
        .x {
            height: 200px;
            background-color: aqua;
        }
        .y {
            color: #986;
            font-size: 60px;
        }
    </style>
</head>
<body>
    <div>1232114</div>
    <script>
        //获取div
        let div = document.querySelector('div')
        //通过.className来设置类名
        //同时设置两类上去拿空格隔开
        div.className = 'x y'
    </script>
</body>

通过classList操作类控制css

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

 <style>
      .di {
         color: #666;
      }
      .d2 {
          background-color: #346;
      }
      .d3 {
          font-size: 60px;
      }
      .d4 {
          height: 100px;
          width: 200px;
          border: 3px solid #985;
      }
    </style>
</head>
<body>
    <div class="d4">112214</div>
    <script>
        let div = document.querySelector('div')
        //添加 一个类,可以一次添加多个,用逗号隔开
        div.classList.add('di','d2','d3')
        //指定移除一个类
        div.classList.remove('di','d2')
        //切换(如果本来有就移除,没有就添加)
        div.classList.toggle('d2')
    </script>
</body>

设置修改表单元素属性

表单很多情况,也需要修改属性,比如点击眼睛,可以看到密码,本质是把表单类型转换为文本框

正常的有属性有取值的 跟其他的标签属性没有任何区别

获取: DOM对象.属性名

设置: DOM对象.属性名 = 新值

1 设置普通的输入框 input.value ="表单的值"

2 设置 按钮的禁用

​ button.disabled=true 禁用

​ button.disabled=false 启用

3 设置单选框或者复选框

​ radio.checked=true 选中

​ checkbox.checked=false 取消选中

4 设置下拉列表 select

​ option.selected=true 选中

<body>
    <input type="text" class="username" />
    是否同意协定
    <input type="checkbox" class="isarg" checked />

    <button class="code" disabled>发送验证码</button>

    <select class="sel">
      <option>去泰国</option>
      <option>去非洲</option>
      <option>去印度</option>
      <option>去啊富汗</option>
    </select>
    <script>
      /* 
      innerText innerHTML 主要是用来设置 双标签的文本内容的
       */
      // 获取一下表单 dom元素
      let username = document.querySelector('.username');
      let isarg = document.querySelector('.isarg');
      let code = document.querySelector('.code');
      // 设置文本内容
      // username.innerText = '我的用户名';
      // 设置输入框的文本内容
      username.value = '我的用户名';
      code.disabled = false; // 启用
      let option = document.querySelector('option:nth-child(4)');
      // option.select = true; // 错误的单词不会报错
      option.selected = true; // 正确的单词
    </script>
  </body>

文本域标签

<body>
    <textarea name="" id="" cols="30" rows="10"><h1>你好</h1></textarea>
  <script>
      //  获取 文本域标签
      // 属于表单元素 又是双标签
      let textarea = document.querySelector('textarea');
      // 在html想要设置  文本域的内容 直接在标签内写即可
      // <textarea>  你好 </textarea>
      // 获取文本域中的值
      // console.log(textarea.value); // 获取 OK <h1>你好</h1>
      // console.log(textarea.innerText); // 获取  不OK
      // console.log(textarea.innerHTML); // 获取   OK  &lt;h1&gt;你好&lt;/h1&gt;
      // value   有区别  innerHTML
      // 设置 textarea 里面文本的内容的时候
      // 可以选择 在标签内写文本即可
      // 想要获取 内容
      // .value  原样获取内容
      // .innerHTML 获取的内容如果包含html 会转移
      // 通过js的方式来设置内容
     //textarea.value=`<h1>标题</h1>`;  //  ok
      // textarea.innerText=`<h1>标题</h1>`; //  ok
      // textarea.innerHTML=`<h1>标题</h1>`;  //  ok
  </script>  
</body>

定时器

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

例如:网页中的倒计时

要实现这种需求,需要定时器函数

开启定时器

1649152521561

关闭定时器

1649152540542

 <script>
        let index = 0
        //创建定时器的同时.返回了定时器id
        let timeId = setInterval(function () {
            index++
            console.log('开始追了',index);
            //判断是否满足条件
            if (index===30) {
                //结束(定时器的变量名)
                clearInterval(timeId)
            }
        },100)//这里是毫秒,1000毫秒等于一秒
    </script>