【DOM BOM】笔记初日 DOM 获取元素 事件基础

本文详细介绍了DOM(文档对象模型)的概念及其在Web开发中的应用。包括如何利用DOM获取和操作页面元素,如根据ID、标签名或类名获取元素,以及HTML5新增的获取元素方式。此外,还探讨了事件的基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

  • API(Application Programming Interface,应用程序编程接口) 是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
  • Web API是浏览器提供的一套操作浏览器功能和页面元素的API(BOM 和 DOM)。

1. DOM 简介

1.1 什么是 DOM

  • 文档对象模型(Document Object Model,DOM),是W3C组织推荐的处理可扩展标记语言(HTML 或者 XML)的标准编程接口。
  • W3C已经定义了一系列的DOM接口,通过这些DOM接口可以改变网页的内容、结构和样式。

1.2 DOM树

在这里插入图片描述

  • 文档:一个页面就是文档,DOM中使用document表示。
  • 元素:页面中的所有标签都是元素,DOM中使用element表示。
  • 节点:网页中所有内容都是节点(标签属性文本注释等),DOM中使用node表示。
  • DOM把以上内容都是看作对象。

2. 获取元素

2.1 如何获取页面元素

DOM 在我们实际开发中主要用来操作元素。
我们如何来获得页面中的元素呢?
获取页面中的元素可以使用以下几种方式:

  • 根据ID获取
  • 根据标签名获取
  • 通过HTML5新增的方法获取
  • 特殊元素获取

2.2 根据ID获取

  • 使用getElementById()方法可以获取带有ID的元素对象。
  • 返回一个匹配到 ID 的DOM Element对象。若在当前Document下没有找到,则返回null。
  • console.dir(timer);打印返回的元素对象,使得我们更好地查看里面的属性和方法
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="time">2019-9-9</div>
  <script>
    // 因为文档页面从上往下加载,而先得有标签,所以script写到标签下面
    // get 获得 element 元素
    // 参数id是大小写敏感的字符串
    // 返回的是一个元素对象
    var timer = document.getElementById('time');
    console.log(timer);
    console.log(typeof timer);
    // console.dir 打印返回的元素对象,使得我们更好地查看里面的属性和方法
    console.dir(timer);
  </script>
</body>
</html>

在这里插入图片描述

2.3 根据标签名获取

  • 使用getElementsByTagName()方法可以返回带有指定标签名的对象的集合
  • 返回的是获取过来元素对象的结合,以伪数组的形式存储的。
<body>
  <ul>
    <li>知否知否,应是绿肥红瘦1</li>
    <li>知否知否,应是绿肥红瘦2</li>
    <li>知否知否,应是绿肥红瘦3</li>
    <li>知否知否,应是绿肥红瘦4</li>
    <li>知否知否,应是绿肥红瘦5</li>
  </ul>
  <script>
    // 返回的是获取过来元素对象的结合,以伪数组的形式存储的
    var lis = document.getElementsByTagName('li');
    console.log(lis);
    console.log(lis[0]);
    for (var i = 0; i < lis.length; i++) {
      console.log(lis[i]);
    }
  </script>
</body>
  • 如果页面中没有这个元素,则返回的是一个空的伪数组的形式。
    在这里插入图片描述

  • 还可以获取某个元素(父元素)内部所有指定标签名的子元素。格式如下:

element.getElementsByTagName('标签名');
  • 注意事项:父元素必须是单个对象(必须指明是哪一个元素对象),获取的时候不包括父元素自己。
<body>
  <ul>
    <li>知否知否,应是绿肥红瘦1</li>
    <li>知否知否,应是绿肥红瘦2</li>
    <li>知否知否,应是绿肥红瘦3</li>
    <li>知否知否,应是绿肥红瘦4</li>
    <li>知否知否,应是绿肥红瘦5</li>
  </ul>
  <ol id='ol'>
    <li>生僻字</li>
    <li>生僻字</li>
    <li>生僻字</li>
    <li>生僻字</li>
    <li>生僻字</li>
  </ol>
  <script>
    // 返回的是获取过来元素对象的结合,以伪数组的形式存储的
    var lis = document.getElementsByTagName('li');
    console.log(lis);
    console.log(lis[0]);
    for (var i = 0; i < lis.length; i++) {
      console.log(lis[i]);
    }
    // 返回伪数组[ol]
    var ol = document.getElementsByTagName('ol');
    console.log(ol);
    // 父元素必须是单个对象(必须指明是哪一个元素对象)
    console.log(ol[0].getElementsByTagName('li'));
    // 方法二
    var ol1 = document.getElementById('ol');
    console.log(ol.getElementsByTagName('li'));
  </script>
</body>

2.4 HTML5新增获取元素方式

(1)getElementsByClassName();
  • 新增类名获取元素方式。
  • 根据类名返回元素对象集合,返回结果为一伪数组。
  • 语法格式
<body>
  <div class="box">盒子</div>
  <div class="box">盒子</div>
  <div class="nav">
    <ul>
      <li>首页</li>
      <li>产品</li>
    </ul>
  </div>
  <script>
    // 1. getElementsByClassName 根据类名获得某些元素集合
    var boxs = document.getElementsByClassName('box');
    console.log(boxs);
  </script>
</body>

在这里插入图片描述

(2)querySelector();
  • 新增指定选择器获取元素方式,根据指定选择器返回第一个元素对象。
  • 切记里面的选择器需要加符号 ,例如:.box 、#nav。
<body>
  <div class="box">盒子</div>
  <div class="box">盒子</div>
  <div class="nav">
    <ul>
      <li>首页</li>
      <li>产品</li>
    </ul>
  </div>
  <script>
    // 2. querySelector 返回指定选择器的第一个元素对象
    // 切记里面的选择器需要加符号 .box #nav
    var firstBox = document.querySelector('.box');
    console.log(firstBox);
    var nav = document.querySelector('#nav');
    console.log(nav);
    var li = document.querySelector('li');
    console.log(li);
  </script>
</body>
(3)querySelectorAll();
  • 新增指定选择器获取元素方式,根据指定选择器返回所有元素对象。
<body>
  <div class="box">盒子</div>
  <div class="box">盒子</div>
  <div class="nav">
    <ul>
      <li>首页</li>
      <li>产品</li>
    </ul>
  </div>
  <script>
    // 3. querySelectorAll()返回指定选择器的所有元素对象
    var allBox = document.querySelectorAll('.box');
    console.log(allBox);
    var lis = document.querySelectorAll('li');
    console.log(lis);
  </script>
</body>

在这里插入图片描述

2.5 获取特殊元素

  • 获取body元素
  • 获取html元素
<body>
  <script>
    // 1. 获取 body 元素
    var bodyEle = document.body;
    // 返回元素对象
    console.log(bodyEle);
    console.dir(bodyEle);
    // 2. 获取 html 元素
    var htmlEle = document.documentElement;
    // 返回元素对象
    console.log(htmlEle);
  </script>
</body>

3 事件基础

  • JavaScript 是我们有能力创建动态页面,而事件是可以被JavaScript侦测道德行为。简单理解为:触发响应的一种机制。
  • 网页中的每个元素都可以产生某些可以触发JavaScript的事件,例如,我们可以在用户点击某按钮时产生一个事件,然后去执行某些操作。

3.1 事件三要素

  • 事件是由三个部分组成:事件源事件类型事件处理程序。我们也称为事件三要素。
  • 事件源:事件被触发的对象。
  • 事件类型:如何触发事件。
  • 事件处理程序:通过一个函数赋值的方式完成。
  • 案例
<body>
  <button id="btn">唐伯虎</button>
  <script>
    // 事件源
    var btn = document.getElementById('btn');
    // 事件类型 onclick  事件处理程序 funtion(){}
    btn.onclick = function() {
      alert('点秋香');
    }
  </script>
</body>

3.2 执行事件的步骤

  • 获取事件源
  • 注册事件(绑定事件)
  • 添加事件处理程序(采取函数赋值形式)
鼠标事件触发条件
onlick鼠标点击左键触发
onmouseover鼠标经过触发
onmouseout鼠标离开触发
onfocus获得鼠标焦点触发
onblur失去鼠标焦点触发
onmousemove鼠标移动触发
onmouseup鼠标弹起触发
onmousedown鼠标按下触发
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值