javascript Dom操作

141 阅读2分钟

js的三部分组成:

          ECMAScript

           DOM: document object  model 文档对象模型(提供一系列的属性和方法,让我们能操作页面中的DOM元素->简单理解为操作页面中的HTML标签)

           BOM  

DOM例子代码

<!DOCTYPE html><html lang="en">  <head>    <meta charset="UTF-8" />    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    <meta http-equiv="X-UA-Compatible" content="ie=edge" />    <title>DOM</title>  </head>  <body>    <div class="box" id="box">      <h2>前端学习清单</h2>      <ul>        <li>HTML5+CSS3</li>        <li>          JavaScript(Es6)基础知识、核心知识、项目实战、组件封装、设计模式等        </li>        <li>AJAX和HTTP</li>        <li>Vue/React/小程序开发的全家桶(基础、源码、实战)</li>        <li>Webpack/Node/Git等常用的工具类或者全栈化</li>      </ul>    </div>  </body></html>

 DOM

获取DOM元素

       document.getElementById([ID])   基于元素的ID获取到这个元素

       document.body  获取页面中的BODY元素

       document.getElementsByTagName([标签名])  根据标签名获取到页面中(指定容器中)所有的元素标签集合

基于JS获取到的DOM元素是“对象数据类型”值,里面包含很多浏览器自带的,用来操作元素的键值对

console.dir(document.getElementById('box'));

原理如图

实例:修改盒子中文字颜色样式的三种写法,那种可以?

let box = document.getElementById('box');
box.style.color = 'red';
let boxSty = box.style;
boxSty.color = 'red';
let text = box.style.color;
text = 'red';
<!DOCTYPE html><html lang="en">  <head>    <meta charset="UTF-8" />    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    <meta http-equiv="X-UA-Compatible" content="ie=edge" />    <title>DOM</title>  </head>  <body>    <div class="box" id="box">      <h2>前端学习清单</h2>      <ul>        <li>HTML5+CSS3</li>        <li>          JavaScript(Es6)基础知识、核心知识、项目实战、组件封装、设计模式等        </li>        <li>AJAX和HTTP</li>        <li>Vue/React/小程序开发的全家桶(基础、源码、实战)</li>        <li>Webpack/Node/Git等常用的工具类或者全栈化</li>      </ul>    </div>    <script>      let box = document.getElementById('box');      box.style.color = 'red';      let boxSty = box.style; // => 获取的是style对应的对象  BBBFFF000      boxSty.color = 'red';      let text = box.style.color; // => 获取的是color初始值'',基本类型值,直接存储再栈内存中      text = 'red';    </script>  </body></html>

实例:隔行换色实现(基本实现)

for (var i = 0; i < itemList.length; i++) {
// 每一次循环,基于变量i的值(等价于集合中对应的索引)获取到当前本轮循环要操作的那个li
var itemLi = itemList[i];
/* if else 判断语句 */
// if (i % 2 !== 0) {
// itemLi.style.color = 'green';
// } else {
// itemLi.style.color = 'red';
// }
/* 三目 判断语句 */
// itemLi.style.color = i % 2 !== 0 ? 'green' : 'red';
/* switch 判断语句 */
switch (i % 2) {
   case 0:
   itemLi.style.color = 'red';
   break;
  default:
  itemLi.style.color = 'green';
}
}
<!DOCTYPE html><html lang="en">  <head>    <meta charset="UTF-8" />    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    <meta http-equiv="X-UA-Compatible" content="ie=edge" />    <title>DOM</title>  </head>  <body>    <div class="box" id="box">      <h2>前端学习清单</h2>      <ul>        <li>HTML5+CSS3</li>        <li>          JavaScript(Es6)基础知识、核心知识、项目实战、组件封装、设计模式等        </li>        <li>AJAX和HTTP</li>        <li>Vue/React/小程序开发的全家桶(基础、源码、实战)</li>        <li>Webpack/Node/Git等常用的工具类或者全栈化</li>      </ul>    </div>    <script>      let box = document.getElementById('box');      /* => 获取BOX盒子中所有的LI = >获取的是HTMLCollection元素集合       (他是一个类数组对象:结构和数组非常的相似,但是不是数组)       */      let itemList = box.getElementsByTagName('li');      /*           获取BOX盒子中所有的H2 => 没有或者只有一项,获取到的依然是元素集合           HTMLCollection       */      let title = box.getElementsByTagName('h2');      console.dir(itemList);      console.dir(title);      //把LI实现奇数和偶数行变色(css中:nth-child 可以搞定)      //重复完成事情:分别拿到每一个LI元素对象,根据判断它是奇数行环视偶数行,给设置不同颜色      for (var i = 0; i < itemList.length; i++) {        // 每一次循环,基于变量i的值(等价于集合中对应的索引)获取到当前本轮循环要操作的那个li        var itemLi = itemList[i];        /* if else 判断语句 */        // if (i % 2 !== 0) {        //   itemLi.style.color = 'green';        // } else {        //   itemLi.style.color = 'red';        // }        /* 三目 判断语句 */        // itemLi.style.color = i % 2 !== 0 ? 'green' : 'red';        /* switch 判断语句 */        switch (i % 2) {          case 0:            itemLi.style.color = 'red';            break;          default:            itemLi.style.color = 'green';        }      }      /*        第一行 奇数行 => 索引 0 索引偶数        第二行 偶数数行 => 索引 1 索引奇数        第三行 奇数行 => 索引 2 索引偶数        ....        当前行的索引是奇数代表偶数行,当前行的索引是偶数,代表的是奇数行        x%2 === 0  能被2整除的是偶数      */    </script>  </body></html>