Web API解释及获取元素和使用方法

95 阅读4分钟

Web API是操作浏览器和文档的接口,分为两部分

  • DOM: 操作文档的接口
graph TD
Start --> Stop
  • BOM: 操作浏览器的接口

什么是DOM:

DOM是文档对象模型DOM(Document Object Model)是将整个 HTML 文档的每一个标签元素视为一个对象,这个对象下包含了许多的属性和方法,通过操作这些属性或者调用这些方法实现对 HTML 的动态更新,为实现网页特效以及用户交互提供技术支撑。

简言之 DOM 是 用来操作网页内容,可以开发网页内容特效和实现网页交互

DOM树

将 HTML 文档以树状结构直观的表现出来,我们称之为文档树或 DOM 树,文档树直观的体现了标签与标签之间的关系。

DOM 节点

节点是文档树的组成部分,每一个节点都是一个 DOM 对象,主要分为元素节点、属性节点、文本节点等。

  1. 【元素节点】其实就是 HTML 标签, headdivbody 等都属于元素节点。
  2. 【属性节点】是指 HTML 标签中的属性, a 标签的 href 属性、div 标签的 class 属性。
  3. 【文本节点】是指 HTML 标签的文字内容,如 title 标签中的文字。

document

document 是 JavaScript 内置的专门用于 DOM 的对象,该对象包含了若干的属性和方法,document 是学习 DOM 的核心。

获取DOM元素

获取匹配的第一个元素

  • querySelector 满足条件的第一个元素

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

如下:

<body>
  <div class="box">
 </div>
  <script>
    const div = document.querySelector('.box')
    console.log(div) //<div class="box"></div>
  </script>
</body>

获取满足条件的全部元素,并返回成一个伪数组

  • querySelectorAll 满足条件的第一个元素

  • 伪数组有数组的长度和下标,但是无法进行修改

语法 : querySelectorAll('css选择器')

如下:

  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <script>
    const arr = document.querySelectorAll('div')
    console.log(arr); //NodeList(5)
  </script>
</body>

注意:

document.getElementById 专门获取元素类型节点,根据标签的 id 属性查找

任意 DOM 对象都包含 nodeType 属性,用来检检测节点类型

其他获取方式:

    //根据id获取第一个元素
    document.getElementById('nav')
    //根据标签获取一类元素,获取页面所以div
    document.getElementsByTagName('div')
    //更具类名获取元素,获取页面所以类名伪w的
    document.getElementsByClassName('w')

注意:

  • document.getElementById 专门获取元素类型节点,根据标签的 id 属性查找
  • 任意 DOM 对象都包含 nodeType 属性,用来检检测节点类型

操作元素内容

  1. innerText,可以修改标签里面的内容,但是不可以解析标签.

  2. innerHTML,可以修改标签里面的内容,可以解析标签.

如下:

  <div class="nav">万叶</div>
  <div class="foot">钟离</div>
  <script>
    //获取元素
    const nav = document.querySelector('.nav')
    const foot = document.querySelector('.foot')
    // 修改元素内容
    nav.innerText = '公子'
    //只识别文本
    foot.innerHTML = '<div>凌人</div>'
    //识别文本也会渲染标签
    // 打印控制台
    console.log(nav); //公子
    console.log(foot); //<div>凌人</div>
  </script>
</body>

注意:如果你不知道用哪个,优先使用innerHTML

修改常用元素属性

元素属性:

  • 标签自己带的一种属性,比如img的src,a的hrdf等,叫固有属性

  • 能够修改样式的叫样式属性

  • 自己定义的属性叫自定义属性

修改固有属性:

  <div id="box" title="盒子">123</div>
  <script>
    // 语法: 元素.属性 = 值
    const div = document.querySelector('div')
    div.title = 箱子 //title="456"
  </script>
</body>

修改样式属性:

  <div>123</div>
  <script>
    const div = document.querySelector('div')
    // 元素.style.属性=值
    div.style.color = 'red'
    div.style.width = '20px'
    div.style.height = '20px'
    // 如果遇到符合属性, 把 - 删掉, 后面的首字母大写,也就是小驼峰命名法
    div.style.fontSize = '12px'
  </script>
</body>

注意:任何标签都有 style 属性,通过 style 属性可以动态更改网页标签的样式,修改的样式是加到行内样式里面,优先级很高

修改类名操作

  • className
  • classList
  1. 操作类名(className) 操作CSS

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

    .box {
      border: 1px solid red;
    }

    .box1 {
      border: 1px solid blue;
      width: 200px;
      height: 200px;
    }
  </style>

<body>
  <div class="box"></div>
  <script>
    const div = document.querySelector('.box')
    // 操作样式
    // 通过给元素加类名达到修改样式
    // 如果修改属性是class的时候.那么必须写成className
    // className会覆盖以前的类名
    div.className = 'c2'
  </script>

注意:className会覆盖以前的类名

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

 <style>
        div {
            width: 200px;
            height: 200px;
            background-color: pink;
        }

        .active {
            width: 300px;
            height: 300px;
            background-color: hotpink;
            margin-left: 100px;
        }
    </style>
</head>

<body>

    <div class="one"></div>
    <script>
        // 1.获取元素
        // let box = document.querySelector('css选择器')
        let box = document.querySelector('div')
        // add是个方法 添加  追加
        // box.classList.add('active')
        // remove() 移除 类
        // box.classList.remove('one')
        // 切换类
        box.classList.toggle('one')
    </script>
</body>

</html>

操作表单元素属性

表单很多情况,也需要修改属性,本质是把表单类型转换为文本框

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

获取:DOM对象.属性名

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

<body>
  <input type="text" value="你好">
  <button>按钮</button>
  <script>
    // 获取元素
    const inp = document.querySelector('input')
    inp.value
    console.log(inp.value);
    inp.value = '你好吗'
    // 修改成密码框
    inp.type = 'password'
    // 获取按钮
    const btn = document.querySelector('button')
    // disabled 不可用   =  false  这样可以让按钮启用
    btn.disabled = true
  </script>
</body>

自定义属性

自定义属性:

在html5中推出来了专门的data-自定义属性

在标签上一律以data-开头

在DOM对象上一律以dataset对象方式获取

<body>
  <!-- 自定义属性一般是data-开头 -->
  <div class="box" data-id="10086"></div>
  <script>
    //  获取元素
    const box = document.querySelector('.box')
    // 语法: 元素.dataset.xxx
    //打印
    console.log(box.dataset.id); //10086
     // 修改属性
    box.dataset.id = 10010
    console.log(box.dataset.id);//10010
  </script>
</body>

间歇函数

知道间歇函数的作用,利用间歇函数创建定时任务。

setInterval 是 JavaScript 中内置的函数,它的作用是间隔固定的时间自动重复执行另一个函数,也叫定时器函数。

<script>
    // 创造定时器:反复性定时器
    // 语法:setInterval(函数,时间)
    //注意:
    // 1.时间是以毫秒为单位
    // 2. 每隔一段时间调用一次函数
    const set = setInterval(function () {
      console.log('你好');
    }, 1000)
    // 关闭定时器,清除定时器
    // clearInterval(定时器标识或定时器的名字)
    clearInterval(set)
    console.log(set); //定时器标识只是个数字
  </script>