DOM之获取元素

2020-12-07  本文已影响0人  amanohina

API简介

var  max =   Math.max(2,3,4);

Web API的概念

BOM(浏览器对象模型)

DOM(文档对象模型)

DOM的概念

DOM树

DOM经常进行的操作

DOM获取页面元素

根据id获取元素

<body>
  <p id="para">text0</p>
  <p id="para">text1</p>
  <p id="box">text2</p>
  <p>text3</p>
  <p>text4</p>
  <script>
    // 根据 id 获取元素
    var para = document.getElementById("para");
    // 打印para
    console.log(para);
    // 打印para是什么类型的数据
    console.log(typeof para);
    // 补充:在控制台打印具体的对象
    console.dir(para);
    // 修改para内行内的样式
    para.style.background = "pink";
    // 代码书写顺序:js 中获取元素时,必须保证元素已经在浏览器中渲染成功
    // 需要将 js 的代码写在 html 结构之后
    // box.style.background = "blue"; 不推荐直接使用 id 名
  </script>
</body>

另外:JS中通过元素的id获取的方式,只会认准第一个获取的元素,另外都不会去获取,所以代码中不要有重复的id

根据标签名获取元素

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script>
    // 提前获取元素
    var divs = document.getElementsByTagName("div");
    console.log(divs);
  </script>
</head>
<body>
  <p>text1</p>
  <p>text2</p>
  <p>text3</p>
  <p>text4</p>
  <div>div1</div>
  <div>div2</div>
  <div>div3</div>
  <div>
    <p>text5</p>
  </div>
  <script>
    console.log(divs);
    // 通过标签名获取元素
    var ps = document.getElementsByTagName("p");
    console.log(ps);
    // HTMLCollection  html 元素组成的集合 伪数组
    // 操作室需要按照操作数组的方法进行
    // 遍历数组
    for (var i = 0 ; i <= ps.length - 1; i++) {
      // 输出每一项
      console.log(ps[i]);
    }
    ps[0].style.background = "pink";
  </script>
</body>
</html>

元素对象内部获取标签元素

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    #box1 p {
      color: red;
    }
  </style>
</head>
<body>
  <div id="box1">
    <p>text1 of box1</p>
    <p>text2 of box1</p>
    <p>text3 of box1</p>
    <p>text4 of box1</p>
  </div>
  <div id="box2">
    <p>text1 of box2</p>
    <p>text2 of box2</p>
    <p>text3 of box2</p>
    <p>text4 of box2</p>
  </div>
  <script>
    // 元素对象内部可以继续打点调用通过标签名获取元素的方法
    // 类似于 css 中 后代选择器,缩小选择范围
    var box1 = document.getElementById("box1");
    // 我们习惯将连续调用方式拆开书写
    var ps1 = box1.getElementsByTagName("p");
    console.log(ps1);
  </script>
</body>
</html>

根据name获取元素

<body>
  <form>
    <input type="radio" name="age">0~10<br>
    <input type="radio" name="age">11~20<br>
    <input type="radio" name="age">20~30<br>
  </form>
  <div id="age">年龄</div>
  <script>
    // 通过标签的 name 属性获取元素
    var ages = document.getElementsByName("age");
    // NodeList  节点列表集合  类数组
    console.log(ages);
    // 兼容问题:在 IE 和 Opera中 有兼容问题,会多选中 id 属性值相同的部分
  </script>
</body>

根据类名获取元素

根据选择器获取元素

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>  
  <script>
    // // 在结构之前使用 选择器 选取方法
    // var para = document.querySelector("#box1 .para");
    // console.log(para);

    // 选择所有符合条件的元素
    // var paras = document.querySelectorAll("#box1 .para");
    // console.log(paras);
  </script>
</head>
<body>
  <div id="box1">
    <p>text1 of box1</p>
    <p class="para">text2 of box1</p>
    <p class="para">text3 of box1</p>
    <p>text4 of box1</p>
  </div>
  <div id="box2">
    <p>text1 of box2</p>
    <p class="para">text2 of box2</p>
    <p class="para">text3 of box2</p>
    <p>text4 of box2</p>
  </div>
  <script>
    // 在结构之后使用 选择器 选取方法
    var para = document.querySelector("#box1 .para");
    console.log(para);
    var paras = document.querySelectorAll("#box1 .para");
    console.log(paras);
    // 兼容问题:在 IE8 以下不能使用
  </script>
</body>
</html>

总结:

上一篇 下一篇

猜你喜欢

热点阅读