【学习笔记42】操作DOM

news2024/11/30 8:41:37

操作DOM

    • 一、操作DOM
      • 1、步骤
      • 2、创建元素节点
      • 3、创建文本节点
      • 4、增加dom(添加到指定父节点的最后)
      • 5、增加dom(添加到指定父节点的最后)
      • 6、增加dom(添加到父节点的最前边)
      • 7、删除DOM
      • 8、修改某一个节点
    • 二、克隆DOM
      • 1、说明
      • 2、复制(克隆)一个LI
    • 三、获取元素尺寸(占地面积)
    • 四、获取浏览器窗口尺寸
    • 五、获取元素偏移量


一、操作DOM

  • 常规意义上的操作DOM, 就是增删改查

1、步骤

  1. 创建 (创建完成之后, 页面并不会有)
  2. 增删改查
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
        </ul>

2、创建元素节点

  • 语法:document.createElement(标签对象);
        var myLi = document.createElement('li');
        console.log(myLi);

在这里插入图片描述

3、创建文本节点

  • 语法:document.createTextNode(文本内容);
        var myStr = document.createTextNode('我是li标签');
        console.log(myStr);

在这里插入图片描述

将文本节点写到元素节点中去

        // 创建元素节点
        var myLi = document.createElement('li')

        // 创建文本节点
        var myStr = document.createTextNode('我是li标签');
        
        myLi.appendChild(myStr);
        console.log(myLi);

在这里插入图片描述

4、增加dom(添加到指定父节点的最后)

  • 语法:父节点.appendChild(创建的元素节点);
        // 创建元素节点
        var myLi = document.createElement('li')

        // 创建文本节点
        var myStr = document.createTextNode('我是li标签');
        myLi.appendChild(myStr);
        console.log(myLi);

        // 获取标对象签
        var oUl = document.querySelector('ul') ;

        // 增加dom(添加到指定父节点的最后)
        oUl.appendChild(myLi);

在这里插入图片描述

5、增加dom(添加到指定父节点的最后)

  • 语法:父节点.insertBefore(要插入的新节点, 插入到那个节点前(传递Null的话是插入到父节点最后))
        // 创建元素节点
        var myLi = document.createElement('li')

        // 创建文本节点
        var myStr = document.createTextNode('我是li标签');
        myLi.appendChild(myStr);
        console.log(myLi);

        // 获取标对象签
        var oUl = document.querySelector('ul') ;

        // 增加dom(添加到指定父节点的最后) 
        oUl.insertBefore(myLi, null);

在这里插入图片描述

6、增加dom(添加到父节点的最前边)

        // 创建元素节点
        var myLi = document.createElement('li')

        // 创建文本节点
        var myStr = document.createTextNode('我是li标签');
        myLi.appendChild(myStr);
        console.log(myLi);

        // 获取标对象签
        var oUl = document.querySelector('ul') ;

        // 增加dom(添加到父节点的最前边)
        oUl.insertBefore(myLi, oUl.firstElementChild);

在这里插入图片描述

7、删除DOM

  • 语法:父节点.removeChild(要删除的节点);
        // 获取标对象签
        var oUl = document.querySelector('ul') ;

        // 删除DOM   
        oUl.removeChild(oUl.firstElementChild);

在这里插入图片描述

8、修改某一个节点

语法:父节点.replaceChild(新的节点, 要被修改的节点);

        // 创建元素节点
        var myLi = document.createElement('li')

        // 创建文本节点
        var myStr = document.createTextNode('我是li标签');
        myLi.appendChild(myStr);
        console.log(myLi);

        // 获取标对象签
        var oUl = document.querySelector('ul') ;
        var oLi = document.getElementsByTagName('li')[1];

        // 修改某一个节点    
        oUl.replaceChild(myLi, oLi);

在这里插入图片描述

二、克隆DOM

        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
        </ul>

1、说明

        var oUl = document.querySelector('ul');
        var oLi = document.querySelector('li');

        console.log(oUl);
        console.log(oLi);
        oUl.appendChild(oLi);    

在这里插入图片描述

2、复制(克隆)一个LI

  • 语法:想要复制的节点.cloneNode(参数布尔值)
  • 参数false不克隆子节点(默认)
  • 参数true克隆子节点
        var oUl = document.querySelector('ul');
        var oLi = document.querySelector('li');

        var newLi = oLi.cloneNode(true);
        oUl.appendChild(newLi);

在这里插入图片描述

三、获取元素尺寸(占地面积)

    <div></div>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        div {
            width: 4000px;
            height: 5000px;
            background-color: pink;
            padding: 50px;
            border: 10px solid black; 
            margin: 50px;
        }
    </style>
  1. offsetXXX —> 实际宽度 + padding + border
  2. clientXXX —> 实际宽度 + padding
        var oDiv = document.querySelector('div')

        // 1. offsetXXX         ---> 实际宽度 + padding + border
        console.log('oDiv.offsetWidth:', oDiv.offsetWidth);
        console.log('oDiv.offsetHeight:', oDiv.offsetHeight);

        console.log('----------------------------')

        // 2. clientXXX         ---> 实际宽度 + padding
        console.log('oDiv.clientWidth:', oDiv.clientWidth);
        console.log('oDiv.clientHeight:', oDiv.clientHeight);

在这里插入图片描述

四、获取浏览器窗口尺寸

    <div></div>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        div {
            width: 4000px;
            height: 5000px;
            background-color: pink;
            padding: 50px;
            border: 10px solid black; 
            margin: 50px;
        }
    </style>
  1. window.innerXXX —> 计算时会包含浏览器的滚动条
  2. document.documentElement.clientXXX —> 计算时不会计算滚动条(只计算浏览器的可视区域)
        var oDiv = document.querySelector('div')

        // 1. window.innerXXX   ---> 计算时 会包含浏览器的滚动条
        console.log('window.innerWidth', window.innerWidth)
        console.log('window.innerHeight', window.innerHeight)

        // 2. document.documentElement.clientXXX    ---> 计算时 不会计算滚动条(只计算浏览器的可视区域)
        console.log('document.documentElement.clientWidth', document.documentElement.clientWidth)
        console.log('document.documentElement.clientWidth', document.documentElement.clientHeight)

在这里插入图片描述

五、获取元素偏移量

    <div class="box1">
        <div class="box2"></div>
    </div>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .box1 {
            width: 400px;
            height: 400px;
            background-color: pink;
            position: relative;
        }

        .box2 {
            width: 100px;
            height: 100px;
            background-color: skyblue;
            position: absolute;
            left: 100px;
            top: 200px;
        }
    </style>
  • 元素.offsetParent
  • 元素.offsetLeft
  • 元素.offsetTop
        // 0. 获取元素
        var box2 = document.querySelector('.box2');

        // 1. 获取元素相对父级      元素.offsetParent
        console.log(box2.offsetParent);


        // 2. 获取元素的偏移量
        console.log('box2.offsetLeft', box2.offsetLeft);
        console.log('box2.offsetTop', box2.offsetTop);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/41231.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WordPress怎么禁止用户使用HTML标签,自动过滤HTML代码?

WordPress怎么禁止用户使用HTML标签&#xff0c;自动过滤HTML代码&#xff1f;出于安全考虑WordPress默认禁止角色为作者的用户写文章时直接添加HTML代码&#xff0c;包括读者留言时也是不允许的。如果想开放此限制&#xff0c;允许作者撰写文章和读者留言时添加HTML代码&#…

Java项目——博客系统(前后端交互)

项目展示 项目说明 使用servlet&#xff0c;实现前后端交互&#xff0c;通过jdbc和mysql数据库进行数据传输&#xff0c;使得可以将用户信息和博客列表存储在数据库中&#xff0c;实现真正的服务器&#xff0c;客户端&#xff0c;数据库三者的交互 项目代码 数据库 在sql数…

进阶的风控策略篇:如果筛选最佳策略帮我们锁定优质客群

在番茄风控往期的内容中&#xff0c;我们一直在跟大家介绍风控策略干货内容&#xff0c;相关内容包括&#xff1a; ①风控的拒绝捞回策略 ②多规则的策略筛选 ③策略的调优 ④策略的开发与应用 … 策略相关的内容可谓干货满满&#xff0c;比如关于策略开发与应用的内容上&#…

SpringBoot SpringBoot 原理篇 1 自动配置 1.15 自动配置原理【1】

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇1 自动配置1.15 自动配置原理【1】1.15.1 看源码了1.15.2 Import({AutoConfig…

初识图学习

初识图学习 一、简单图的基础 什么是图 七桥问题的定义是&#xff1a;一个步行者怎样才能不重复&#xff0c;不遗漏的一次走完七座桥。最后回到出发点。 当年&#xff0c;大数学家在解答七桥问题的同时&#xff0c;也开创了数学的一个新分支图论。 可以毫不夸张的说&#xff…

半小时制作简单版澳大利亚导游地图,太简单了,你也可以

目录 1 前言 2 QQ扫码注册一个账号 3 编辑景区 3.1 新建一个景区 3.2 增加景点 4 预览 5 申请管理员审核 6 看一下发布后的效果 1 前言 不少景区为了提升游客旅游体验&#xff0c;需要制作自己的导游地图&#xff0c;游客扫一下二维码就可以看到景区全貌和景点介绍。制作这…

销售词汇Sell In、Sell Through、Sell Out辨析

原文出处&#xff1a;https://zhuanlan.zhihu.com/p/89563704 销售的过程其实是一个货物和资金双向流动的过程&#xff0c;货物从厂家流向消费者&#xff0c;资金从消费者流向厂家。 但是大多数情况下&#xff0c;厂家是没办法直接把货物卖给消费者的&#xff0c;或者说厂家是没…

虚拟机安装openEuler/MobaXterm工具登录系统

✨✨个人主页:沫洺的主页 &#x1f4da;&#x1f4da;系列专栏: &#x1f4d6; JavaWeb专栏&#x1f4d6; JavaSE专栏 &#x1f4d6; Java基础专栏&#x1f4d6;vue3专栏 &#x1f4d6;MyBatis专栏&#x1f4d6;Spring专栏&#x1f4d6;SpringMVC专栏&#x1f4d6;SpringBoot专…

一个用C#开发的操作系统的开源项目

自从C#的AOT编译机制发布以来&#xff0c;有趣的项目越来越多&#xff0c;今天给大家推荐一个开源项目&#xff0c;用C#开发的64位操作系统。 文章目录项目简介项目源码开发环境虚拟机与裸机硬件支持功能列表完善的编译、安装文档操作系统界面项目地址项目简介 这是一个使用.N…

SpringBoot SpringBoot 原理篇 2 自定义starter 2.2 IP计数业务功能开发【自定义starter】

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇2 自定义starter2.2 IP计数业务功能开发【自定义starter】2.2.1 大概看看别人…

阿里云服务器安装mysql8

1. 安装前准备 查看是否安装&#xff1a; rpm -qa | grep mysql移除不想要的版本&#xff1a; yum remove 名称查找关于mysql的所有文件&#xff08;配置文件&#xff09; find / -name mysql ##或者 whereis mysql删除配置文件 rm -rf 文件最后需要注意的是&#xff1a;卸载后…

配置iSCSI实现Linux的远程块存储

文章目录一 名词解释二 需求三 环境准备四 搭建流程1 服务端准备硬盘并分区2 服务端安装软件包&#xff0c;并启动服务3 服务端 5个create 操作3-1 定义块设备&#xff0c;创建后备存储。3-2 为目标创建IQN3-3 创建一个ACL来控制特定的客户端访问3-4 为每个后备存储创建一个LUN…

基于C#的校园闲置物品共享系统的开发和实现(Asp.net+Web)

目 录 摘 要 I Abstract II 第1章 绪论 1 1.1选题背景 1 1.1.1校园闲置物品共享系统的开发背景 1 1.1.2学生闲置物品交易活动的现状 1 1.2 校园闲置物品共享系统的研究方向和内容 1 1.2.1研究方向 1 1.2.2研究内容 2 1.3 校园闲置物品共享系统的设计目标 2 1.4 校园闲置物品共…

Visual Studio Code(vs code) 安装c# .net环境 solution

Visual Studio Code(vs code) 安装c# .net环境 solution 一、安装.net必要环境 1.安装环境 https://dotnet.microsoft.com/zh-cn/download 我这里选择的是 .net 6.0 ;版本 .net SDK x86 2.在vs code拓展 搜索.net 全名&#xff1a;.NET Core Extension Pack 作者&#xf…

操作系统的发展与分类

文章目录世界上第一台通用电子计算机操作系统的发展阶段1. 手工操作阶段&#xff08;无操作系统的计算机系统&#xff09;2. 批处理阶段&#xff1a;同时处理多道程序3. 分时操作系统&#xff08;Time Sharing System&#xff09;4. 实时操作系统&#xff08;Real Time System&…

毫米波传感器原理介绍:测距

因为本篇是第一篇关于毫米波雷达传感器设备的介绍&#xff0c;我便多啰嗦两句。近几年随着无人驾驶等领域在国内的火热&#xff0c;做支撑实现无人驾驶的智能设备也多了起了&#xff0c;首当其冲的便是无人驾驶的眼睛“摄像头”&#xff0c;同样作为一种辅助手段的雷达技术也被…

HTMLDOM中的API之btoa和atob

btoa() btoa() 方法可以将一个二进制字符串&#xff08;例如&#xff0c;将字符串中的每一个字节都视为一个二进制数据字节&#xff09;编码为 Base64 编码的 ASCII 字符串。 示例&#xff1a; let encodedData window.btoa("Hello, world"); // 编码 let decode…

【C++笔试强训计划】第一天

遇事不决&#xff0c;可问春风&#xff0c;春风不语&#xff0c;即随本心 欢迎来到我的笔试强训计划专栏&#xff0c;这是计划正式开始的第一天。另外&#xff0c;我想说的是&#xff1a;博主本身水平有限&#xff0c;本专栏只作为学习笔记分享记录使用&#xff0c;对于一些题目…

Linux中如何获得进程的运行时堆栈

关于这个话题&#xff0c;我们一般是为了处理一下生产环境中程序出现死循环或者死锁等问题。我们一般想到的方法就是gdb attach上一个运行中的进程。但是这个需要手动交互。通过网上查找和实践&#xff0c;可以有以下几种选择&#xff1a; 第一种&#xff1a;pstack 进程ID …

【电商】管理后台--采购管理(执行层)

采购&#xff0c;从表面上看是公司花钱的部门&#xff0c;实则担负了寻找、管理供应商的重任&#xff0c;确保公司绝大部分的供应链成本可以保质、保量的完成。 现在很多电商企业&#xff0c;都不自己生产产品&#xff0c;产品的来源基本上都是从供应商那里采购&#xff0c;所以…