JavaScript系统学习---07---DOM-节点操作

本文介绍了DOM节点的类型,包括元素、属性和文本节点,重点讲述了元素节点。详细讲解了如何查找父节点、子节点和兄弟节点,并演示了节点的增加和删除操作。此外,还阐述了JavaScript中的时间对象,如何实例化、获取时间戳以及转换时间格式。最后,提及了浏览器渲染原理中的重绘和回流概念。
摘要由CSDN通过智能技术生成

一、DOM节点

1.1 DOM节点

        DOM树里每一个内容都称之为节点;

1.节点类型

       (1) 元素节点

  •                 所有的标签 比如 body、 div
  •                 html 是根节点

        (2)属性节点

  •                 所有的属性 比如 href

       (3) 文本节点

  •                 所有的文本

2.小结

(1)什么是DOM 节点?

  •          DOM树里每一个内容都称之为节点

(2) DOM节点的分类?

  •         元素节点 比如 div标签
  •         属性节点 比如 class属性
  •         文本节点 比如标签里面的文字

(3) 我们重点记住那个节点?

  •          元素节点
  •          可以更好的让我们理清标签元素之间的关系

1.2 查找节点

1.点关系:

  •         父节点
  •         子节点
  •         兄弟节点

2.父节点查找:

  •         parentNode 属性
  •         返回最近一级的父节点 找不到返回为null

3.子节点查找

         childNodes (尽量不用,会取到换行符)

        获得所有子节点、包括文本节点(空格、换行)、注释节点等

         children (重点)

  •         仅获得所有元素节点
  •         返回的还是一个伪数组

4.兄弟关系查找:

(1) 下一个兄弟节点

         nextElementSibling 属性

(2)上一个兄弟节点

         previousElementSibling 属性

5.小结

        (1)查找父节点用那个属性?

          parentNode

        (2) 查找所有子节点用那个属性?

         children

        (3) 查找兄弟节点用那个属性?

         nextElementSibling

         previousElementSibling

1.3 增加节点

1.创建节点

  •          即创造出一个新的网页元素,再添加到网页内,一般先创建节点,然后插入节点
  •          创建元素节点方法:

 2.追加节点

  •         要想在界面看到,还得插入到某个父元素中
  •         插入到父元素的最后一个子元素:

 插入到父元素中某个子元素的前面

 3.克隆节点

cloneNode会克隆出一个跟原标签一样的元素,括号内传入布尔值

  • 若为true,则代表克隆时会包含后代节点一起克隆
  • 若为false,则代表克隆时不包含后代节点
  • 默认为false

1.4 删除节点

        若一个节点在页面中已不需要时,可以删除它 ;

        在 JavaScript 原生DOM操作中,要删除元素必须通过父元素删除 ;

语法 :

注:

  •          如不存在父子关系则删除不成功 ;
  •          删除节点和隐藏节点(display:none) 有区别的: 隐藏节点还是存在的,但是删除,则从html中删除节点;

二、 时间对象

2.1 实例化

  •         在代码中发现了 new 关键字时,一般将这个操作称为实例化 ;
  •         创建一个时间对象并获取时间;
  • 获得当前时间

  •  获得指定时间

2.2 时间对象方法

因为时间对象返回的数据我们不能直接使用,所以需要转换为实际开发中常用的格式

案例:页面显示时间

        需求: 将当前时间以:YYYY-MM-DD HH:mm 形式显示在页面
<body>
    <div></div>
    <script>
        let arr = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];

        setInterval(function () {
            let date = new Date();
            let year = date.getFullYear();
            let month = date.getMonth() + 1;
            let date1 = date.getDate();
            let hour = date.getHours();
            let min = date.getMinutes();
            let sec = date.getSeconds();
            let day = date.getDay();
            let div = document.querySelector('div');
            div.innerHTML = `今天是: ${year} 年 ${month} 月 ${date1} 日
         ${hour} : ${min} : ${sec} 今天是${arr[day]}`;
        }, 1000);
    </script>
</body>

2.3 时间戳

1. 什么是时间戳

是指1970年01月01日00时00分00秒起至现在的毫秒数,它是一种特殊的计量时间的方式

2. 三种方式获取时间戳

        (1)使用getTime()方法

        (2)简写 + newDate()(重点应用)

        (3)使用Date().now()

         无需实例化,但是只能得到当前的时间戳,而前面两种可以返回指定时间的的时间戳。

  四、重绘和回流

1. 浏览器是如何进行界面渲染的

  • 解析(Parser)HTML,生成DOM树(DOM Tree)
  • 同时解析(Parser) CSS,生成样式规则 (Style Rules)
  • 根据DOM树和样式规则,生成渲染树(Render Tree)
  • 进行布局 Layout(回流/重排):根据生成的渲染树,得到节点的几何信息(位置,大小)
  • 进行绘制 Painting(重绘): 根据计算和获取的信息进行整个页面的绘制
  • Display: 展示在页面上

 2. 重绘和回流(重排)

(1) 回流(重排)

        当 Render Tree 中部分或者全部元素的尺寸、结构、布局等发生改变时,浏览器就会重新渲染部分或全部文档的过程称为 回流。

(2)重绘

        由于节点(元素)的样式的改变并不影响它在文档流中的位置和文档布局时(比如:color、background-color、 outline等), 称为重绘。

(3)重绘不一定引起回流,而回流一定会引起重绘。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记录菌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值