JavaScript基础——DOM节点操作学习笔记

2023-05-16

目录

笔记 

方法的使用

案例一、 动态生成表格

案例二、下拉菜单,鼠标经过和离开实现

案例全部代码


 

笔记 

 ###节点概述
    1.网页中的任何内容都是节点——文字、标签、元素、文档等。
    节点至少有nodeType(节点类型)、nodeName(节点名称)、nodeValue(节点值)三个基本属性
    节点的类型nodeType
        元素节点:1 ———主要操作
        属性节点:2
        文本节点:3
    2.节点的层级关系
        父子兄
        父节点:
            parentNode  得到的是最近的一个父节点 
            父节点使用:
                element.parentNode  返回的是父节点
        子节点:
            childNode  得到的是所有的子节点(包括文本等)
            children  得到的是所有子元素节点(不包括文本等)——常用
            firstChildren lastChildren 得到的是第一个/最后一个子节点(包括文本等)
            firstElementChildren lastElementChildren 得到的是第一个/最后一个子元素节点(不包括文本等)
            子节点的使用:
                element.children  返回的是所有子元素节点
            实例:实现下拉菜单——使用节点获取元素操作更方便
        兄弟节点:
                nextSibling:得到的是下一个子节点(包括文本等)
                previousSibling:得到的是上一个子节点(包括文本等)
                nextElementSibling:得到的是下一个子元素节点(不包括文本等)
                previousElementSibling:得到的是上一个子元素节点(不包括文本等)
    3.第一个子元素和最后一个子元素的获取:
    ele.children[0] ———— 第一个子元素节点
    ele.children[ele.children.length - 1] ———— 最后一个子元素节点

###节点的创建、添加、移除、复制
    创建节点:
        节点是文档创建,创建后一般是要添加到知道地方的
        document.createElement('TagName')方法  动态创建元素节点
            比如:document.createElement('li')
    添加节点:
        node.appendChild(child) 方法 
            在node父节点列表的末尾添加child子节点  
            比如:ul.appendChild(li) 在ul的子元素列表末尾添加元素节点
        node.insertBefore(child,指定元素)方法
            在指定元素节点的前面添加子节点元素  
            比如:ul.insertBefore(li,ul.children[0]) 在ul的第一个子元素节点前面添加元素节点
    删除节点:
        node.removeChild(child)方法 
            在node父节点列表删除child子节点
    复制节点:
        node.cloneChild([child])方法
            无参数:浅拷贝 —— 只复制标签 不复制内容
            有参数child:深拷贝 —— 标签和标签里的所有内容都复制

方法的使用

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>节点创建、添加、删除、复制</title>
    <style>
        li {
            background-color: pink;
            margin-top: 20px;
            padding: 5px 0;
            width: 500px;
        }

        li button {
            float: right;
            margin-right: 10px;
        }
    </style>
</head>

<body>
    <ul>
        <li>1
            <button>删除元素</button>
            <button>添加元素</button>
            <button>删除添加的</button>
        </li>
        <li>2
            <button>删除元素</button>
            <button>添加元素</button>
            <button>删除添加的</button>
        </li>
        <li>3
            <button>删除元素</button>
            <button>添加元素</button>
            <button>删除添加的</button>
        </li>
        <li>4
            <button>删除元素</button>
            <button>添加元素</button>
            <button>删除添加的</button>
        </li>
    </ul>
    <script>
        // 点击添加按钮, 就添加一个li到下面列表中
        // 获取事件源
        var ul = document.querySelector('ul');
        var lis = ul.children;
        var aaa = ul.children[0].cloneNode(true);
        ul.appendChild(aaa);
        // 遍历每个li 找到其中的按钮
        for (var i = 0; i < lis.length; i++) {
            // 注册添加事件
            var addbtn = lis[i].children[1];
            addbtn.onclick = function () {
                // 创建一个li
                var lili = document.createElement('li');
                // 并把这个创建的li添加到ul中
                ul.appendChild(lili);
            }
            // 注册删除事件 点击删除按钮,删除的是按钮所在的li  是当前按钮的父节点
            var removeBtn = lis[i].children[0];
            removeBtn.onclick = function () {
                ul.removeChild(this.parentNode); // 移除的是btn的父亲 —— li
            }
            // 删除添加的元素
            var removeAdd = lis[i].children[2];
            removeAdd.onclick = function () {
                // 从最后一个开始删除
                ul.removeChild(ul.children[ul.children.length - 1]);
            }
        }
    </script>
</body>

</html>

 

案例一、 动态生成表格

在实际中,表格中的数据是从数据库中取得,这里我是用对象模拟得数据。

图中得列表中的行,都是自动生成的

 点击按钮可以删除行:

JS部分:

    <script>
        // 表格的数据应该是数据库中的,暂时用对象模拟数据
        var arr = [{
            name: '薛',
            subject: 'JavaScript',
            source: 90
        }, {
            name: '朱',
            subject: 'JavaScript',
            source: 80
        }, {
            name: '张',
            subject: 'JavaScript',
            source: 90
        }, {
            name: '赵',
            subject: 'JavaScript',
            source: 99
        }];
        // 获取元素  生成的表格是在tbody中
        var tbody = document.querySelector('tbody');
        // 把数组中的对象信息存入tbody
        for (var i = 0; i < arr.length; i++) { //创建行
            // 1.创建行  数组中几个对象 就创建几个行
            var tr = document.createElement('tr');
            // 2.添加行 把行添加到tbody中
            tbody.appendChild(tr);
            // 创建每一行的单元格  单元格的个数就是对象的属性个数 
            // 遍历对象 获取属性个数   key 获取的是属性  obj[key]是属性值
            for (var key in arr[i]) { // 创建列
                // 有一个属性就创建td列
                var td = document.createElement('td');
                // 获取对象的值作为列的内容
                td.innerHTML = arr[i][key];
                // 把列添加到行中
                tr.appendChild(td);
            }
            // 3.创建删除链接的单元格
            var ass = document.createElement('td');
            ass.innerHTML = '<a href="javascript:;">删除</a>';
            tr.appendChild(ass);
        }
        // 表格创建好之后,再进行其他操作
        // 4.点击删除按钮,删除链接所在行
        // 获取事件源
        var aas = document.querySelectorAll('a');
        // 因为有多个链接 所有需要循环注册事件
        for (var i = 0; i < aas.length; i++) {
            aas[i].onclick = function () {
                // 要删除的是tr  a的父亲——td  a的父亲的父亲——td的父亲——tr
                tbody.removeChild(this.parentNode.parentNode);
            }
        }
    </script>

 

 

案例二、下拉菜单,鼠标经过和离开实现

    <script>
        // 鼠标经过,下拉菜单显示
        // 获取事件源
        var nav = document.querySelector('.nav');
        var lis = nav.children; // nav的子节点就是所有的li li中有链接和下拉列表
        // 注册事件
        for (var i = 0; i < lis.length; i++) {
            lis[i].onmouseover = function () {
                // 让第二个子元素节点显示
                this.children[1].style.display = 'block';
            }
            lis[i].onmouseout = function () {
                this.children[1].style.display = 'none';
            }
        }
    </script>

 

案例全部代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>下拉菜单</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        li {
            list-style-type: none;
        }

        a {
            text-decoration: none;
            font-size: 14px;
        }

        .nav {
            margin: 100px;
        }

        .nav>li {
            position: relative;
            float: left;
            width: 80px;
            height: 41px;
            text-align: center;
        }

        .nav li a {
            display: block;
            width: 100%;
            height: 100%;
            line-height: 41px;
            color: #333;
        }

        .nav>li>a:hover {
            background-color: #eee;
        }

        .nav ul {
            display: none;
            position: absolute;
            top: 41px;
            left: 0;
            width: 100%;
            border-left: 1px solid #FECC5B;
            border-right: 1px solid #FECC5B;
        }

        .nav ul li {
            border-bottom: 1px solid #FECC5B;
        }

        .nav ul li a:hover {
            background-color: #FFF5DA;
        }
    </style>
</head>

<body>
    <ul class="nav">
        <li>
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href="">私信</a>
                </li>
                <li>
                    <a href="">评论</a>
                </li>
                <li>
                    <a href="">@我</a>
                </li>
            </ul>
        </li>
    </ul>
    <script>
        // 鼠标经过,下拉菜单显示
        // 获取事件源
        var nav = document.querySelector('.nav');
        var lis = nav.children; // nav的子节点就是所有的li li中有链接和下拉列表
        // 注册事件
        for (var i = 0; i < lis.length; i++) {
            lis[i].onmouseover = function () {
                // 让第二个子元素节点显示
                this.children[1].style.display = 'block';
            }
            lis[i].onmouseout = function () {
                this.children[1].style.display = 'none';
            }
        }
    </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>
        table {
            width: 500px;
            margin: 100px auto;
            border-collapse: collapse;
            text-align: center;
        }

        td,
        th {
            border: 1px solid #333;
        }

        thead tr {
            height: 40px;
            background-color: #ccc;
        }
    </style>
</head>

<body>
    <table cellspacing="0">
        <thead>
            <tr>
                <th>姓名</th>
                <th>科目</th>
                <th>成绩</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody>

        </tbody>
    </table>
    <script>
        // 表格的数据应该是数据库中的,暂时用对象模拟数据
        var arr = [{
            name: '薛',
            subject: 'JavaScript',
            source: 90
        }, {
            name: '朱',
            subject: 'JavaScript',
            source: 80
        }, {
            name: '张',
            subject: 'JavaScript',
            source: 90
        }, {
            name: '赵',
            subject: 'JavaScript',
            source: 99
        }];
        // 获取元素  生成的表格是在tbody中
        var tbody = document.querySelector('tbody');
        // 把数组中的对象信息存入tbody
        for (var i = 0; i < arr.length; i++) { //创建行
            // 1.创建行  数组中几个对象 就创建几个行
            var tr = document.createElement('tr');
            // 2.添加行 把行添加到tbody中
            tbody.appendChild(tr);
            // 创建每一行的单元格  单元格的个数就是对象的属性个数 
            // 遍历对象 获取属性个数   key 获取的是属性  obj[key]是属性值
            for (var key in arr[i]) { // 创建列
                // 有一个属性就创建td列
                var td = document.createElement('td');
                // 获取对象的值作为列的内容
                td.innerHTML = arr[i][key];
                // 把列添加到行中
                tr.appendChild(td);
            }
            // 3.创建删除链接的单元格
            var ass = document.createElement('td');
            ass.innerHTML = '<a href="javascript:;">删除</a>';
            tr.appendChild(ass);
        }
        // 表格创建好之后,再进行其他操作
        // 4.点击删除按钮,删除链接所在行
        // 获取事件源
        var aas = document.querySelectorAll('a');
        // 因为有多个链接 所有需要循环注册事件
        for (var i = 0; i < aas.length; i++) {
            aas[i].onclick = function () {
                // 要删除的是tr  a的父亲——td  a的父亲的父亲——td的父亲——tr
                tbody.removeChild(this.parentNode.parentNode);
            }
        }
    </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>节点创建、添加、删除、复制</title>
    <style>
        li {
            background-color: pink;
            margin-top: 20px;
            padding: 5px 0;
            width: 500px;
        }

        li button {
            float: right;
            margin-right: 10px;
        }
    </style>
</head>

<body>
    <ul>
        <li>1
            <button>删除元素</button>
            <button>添加元素</button>
            <button>删除添加的</button>
        </li>
        <li>2
            <button>删除元素</button>
            <button>添加元素</button>
            <button>删除添加的</button>
        </li>
        <li>3
            <button>删除元素</button>
            <button>添加元素</button>
            <button>删除添加的</button>
        </li>
        <li>4
            <button>删除元素</button>
            <button>添加元素</button>
            <button>删除添加的</button>
        </li>
    </ul>
    <script>
        // 点击添加按钮, 就添加一个li到下面列表中
        // 获取事件源
        var ul = document.querySelector('ul');
        var lis = ul.children;
        var aaa = ul.children[0].cloneNode(true);
        ul.appendChild(aaa);
        // 遍历每个li 找到其中的按钮
        for (var i = 0; i < lis.length; i++) {
            // 注册添加事件
            var addbtn = lis[i].children[1];
            addbtn.onclick = function () {
                // 创建一个li
                var lili = document.createElement('li');
                // 并把这个创建的li添加到ul中
                ul.appendChild(lili);
            }
            // 注册删除事件 点击删除按钮,删除的是按钮所在的li  是当前按钮的父节点
            var removeBtn = lis[i].children[0];
            removeBtn.onclick = function () {
                ul.removeChild(this.parentNode); // 移除的是btn的父亲 —— li
            }
            // 删除添加的元素
            var removeAdd = lis[i].children[2];
            removeAdd.onclick = function () {
                // 从最后一个开始删除
                ul.removeChild(ul.children[ul.children.length - 1]);
            }
        }
    </script>
</body>

</html>

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript基础——DOM节点操作学习笔记 的相关文章

  • 如何在 AngularJS 中使用 $timeout 运行带有参数的函数?

    我的 AngularJS 控制器中有这个函数 看起来像这样 polling interval 1000 var poll function Execution code timeout poll polling interval poll
  • 使用 AJAX 来回发送信息

    使用 post 你可以向服务器发送信息 但是当你需要从服务器接收信息时怎么办呢 信息如何从可以由 php 变量保存的方式变为可以由 javascript 变量保存的方式 反之亦然 这与您的问题更相关 http docs jquery com
  • 画布图像遮罩/重叠

    在我的项目中 我必须使用画布在另一个相同尺寸和图案图像上实现一个不同的颜色图像 并且图像不是圆形或矩形形状 所有这些都是波浪形状的 它将应用于单个主背景图像 以便在每个主背景图像上显示多个图形onclick功能 重叠的图像应更改为另一种选定
  • RequireJS 不遵循设置了 baseUrl 的 data-main 的相对路径

    使用 requireJS 我尝试为我的数据主指定一个与 baseUrl 不同的路径 看来 requireJS 会忽略我在文件名之前输入的任何内容 并始终在 baseUrl 文件夹中查找该文件 我有以下文件夹结构 index html scr
  • 如何在Python + Selenium中获取元素的值

    我在我的 Python 3 6 3 代码中得到了这个 HTML 元素 作为 Selenium网页元素当然 span class ocenaCzastkowa masterTooltip style color 000000 alt 5 sp
  • Ember.js 数组作为模型的属性

    干杯 我有一些模型 它的一个属性是一个数组 但由于某些原因 我在服务器上使用 mongoDB 并且它是嵌入式模型和 ember data 的问题 我不能做这样的事情 App Foo DS Model extend numbers DS ha
  • 如何在 Jest 测试中模拟 StatusBarManager.getHeight?

    我正在使用 expo 34 并且反应本机用户界面库 https www npmjs com package react native ui lib来自 wix 并且在为我的组件设置笑话测试时遇到问题 问题看起来出现在link https g
  • 在 Javascript 中,使用 var foo = function foo(i) { ... } 的动机或优点是什么?

    我在答案中看到 在Javascript中 为什么要写 var QueryStringToHash function QueryStringToHash query https stackoverflow com questions 3233
  • React.js this.props.data.map() 不是一个函数

    我正在搞乱反应并尝试解析和渲染 json 对象 现在 我只是使用硬编码对象设置它以进行测试 而不是从 ajax 调用中获取它
  • jQuery 问题:它的真正含义是什么?

    function window undefined jquery code jQuery window 它到底意味着什么 是不是也意味着 document ready 或者只是两种不同的东西 已经有两个答案 但这是我对代码缺失端的猜测 fu
  • 表单提交不起作用

    我有一张桌子 可以打印出所有可用的相机 它使用表单来更改这些设置 问题在于该表单仅更新条目中的最后一个摄像机 换句话说 如果我更改表单并为列表中的最后一个摄像机点击 应用 它将起作用 如果我更改此列表中任何其他摄像机的表单 它会将其更改为与
  • 函数声明或函数表达式

    我刚刚在块作用域中定义函数时遇到了问题 考虑以下程序 try greet function greet alert Merry Christmas catch error alert error 我希望这个程序能够发出警报Merry Chr
  • 检测 JavaScript 中的焦点丢失

    我希望能够检测 JavaScript 中任意元素何时失去焦点 因此我可以构建一个类似于 jEdit 的内联编辑工具 我不能依赖 jQuery 来实现这个库 所以我需要一个本机方法来完成它 我查看了 onblur 这似乎是正确的事情 但 MD
  • 如何让无限滚动发挥作用?

    我正在尝试让这个无限加载脚本在我的项目中工作 这是我的 HTML div div div class pagina div div class pagina div div class pagina div div class pagina
  • NodeJS 中的缩进多行日志记录

    我要打印JSON stringify d 反对控制台 将上下文作为 Mocha 测试套件输出的一部分 当测试缩进时 我希望对象日志行向右缩进足够远 例如 3 4 个制表符空格 以便它们可以识别地位于右侧describe group 我怎样才
  • 是否可以从 webpack 中的文件名中删除特殊字符?

    长话短说 我的资产文件名中不能包含某些字符 例如连字符 我没有运气通过解析 webpack 文档来弄清楚是否可以使用正则表达式或类似的东西重命名文件 这样我就可以从我无法控制源文件名的 3rd 方包中删除任何连字符 我的超级天真的例子是这样
  • 使用重复模式捕获正则表达式

    我试图捕获字符串的所有部分 但我似乎无法正确处理 该字符串具有以下结构 1 22 33 中间有运算符的数字 可以有任意数量的术语 我想要的是 1 22 33 1 22 33 但我得到 1 22 33 22 33 我尝试过各种正则表达式 这是
  • 谷歌地图绘制两点之间的路线

    我编写了这段无辜的 JavaScript 代码 它允许用户创建两个标记并绘制它们之间的路线 它不起作用 相反 它给出了一个奇怪的错误 Uncaught TypeError Cannot read property ya of undefin
  • 如何制作饼图聚合数据源?

    Using 适用于 ASP NET MVC 的 Kendo UI 完整版 http www kendoui com 版本 2013 3 1119 2013年11月20日 如果我有这段代码 status chart kendoChart da
  • ES6解构对象赋值函数参数默认值

    您好 我正在查看在传递函数参数时使用对象解构的示例对象解构演示 https developer mozilla org en US docs Web JavaScript Reference Operators Destructuring

随机推荐

  • JDBC安装与配置

    JDBC xff08 Java DataBase Connectivity java数据库连接 xff09 是一种用于执行SQL语句的Java API xff0c 可以为多种关系数据库提供统一访问 xff0c 它由一组用Java语言编写的类
  • Ubuntu22.04安装与配置记录

    Ubuntu22 04安装与配置记录 原文地址 xff1a Ubuntu22 04安装与配置记录 2022年4月21日 xff0c ubuntu发布了22 04版本 xff0c 该版本是一个LTS长期支持版本 xff0c 技术支持5年 xf
  • java版GDAL环境报错--Native library load failed. java.lang.UnsatisfiedLinkError: no gdalalljni in java.

    xff08 windows版 xff09 ERROR Native library load failed java lang UnsatisfiedLinkError no gdalalljni in java library path
  • 整理牛客网的C++面经

    基础知识 牛客网上的C 43 43 面经有很多重复的问题 xff0c 经过我自己的理解和思考重新整理一下 xff0c 希望可以加深自己的记忆 Static关键字的作用 静态全局变量 xff1a 静态存储区 xff0c 未初始化会初始化为0
  • 【EHub_tx1_tx2_E100】Ubuntu18.04 + ROS_ Melodic + WHEELTEC 9轴IMU测试(如何在该环境下配置驱动/RVIZ查看)

    简介 xff1a 介绍WHEELTEC 9轴IMU 在EHub tx1 tx2 E100载板 xff0c TX1核心模块环境 xff08 Ubuntu18 04 xff09 下测试ROS驱动 xff0c 配置驱动环境 xff0c RVIZ查
  • #kali网卡配置以及乱码问题解决 #title1:kali-linux-2019.4-i386 #title2:network

    kali网卡配置以及乱码问题解决 title1 kali linux 2019 4 i386 title2 network 0x01 改网卡配置 xff0c 重启网卡服务 保证虚拟机系统桥接 vi etc network interface
  • git错误记录:git-lfs filter-process: git-lfs: command not found

    参考文章 The Git init amp fetch approach breaks Git LFS 问题描述 在pull远程主分支代码时 xff0c 因为合作开发的伙伴上传了个静态库 xff0c 大文件拉取不下来 xff0c 出现了 g
  • 智能车调试

    首先 xff1a 摄像头采集图像 xff0c 采集是一张一张的 xff0c 在每一张图片然后根据二维数组识别黑白边界 xff0c 进而通过每一行得到黑白边界求出中值点 xff0c 车随中值点构成的中值线驱动电机的行驶 xff0c 电机有加速
  • STM32串口不定长度传输策略

    目录 一 接收中断 43 空闲中断 二 接收中断 43 外加定时器 三 接收中断 43 自定义结束符 四 串口DMA接收不定长数据 一 接收中断 43 空闲中断 RXNE中断和IDLE中断的区别 xff1f 当接收到1个字节 xff0c 就
  • 【AUTOSAR】【信息安全】CSM

    目录 一 概述 二 依赖模块 三 功能描述 3 1 基本体系结构 3 2 通用行为 3 2 1 正常操作 3 2 2 设计说明 3 3 错误分类 3 3 1 开发错误 3 3 2 运行时错误 四 API接口 4 1 通用接口 4 2 加密接
  • ::在c++中什么意思

    34 34 在C 43 43 中表示作用域 xff0c 和所属关系 34 34 是运算符中等级最高的 xff0c 它分为三种 xff0c 分别如下 xff1a 一 作用域符号 xff1a 作用域符号 的前面一般是类名称 xff0c 后面一般
  • 在eclipse上配置使用tomcat

    在eclipse上配置使用tomcat 1 确认自己已经下载好tomcat后 xff0c 打开eclipse后选择菜单栏中的windows列表中的首选项配置 2 找到Server选项中的Runtime Envirnm选项 xff0c 如图所
  • 本科学完C语言、C++、python(学透点),还有必要学别的语言吗?

    原作者是一名高校的信息技术类的教师 xff0c 主教程序设计类课程 这样的问题 xff0c 作者的学生也会经常问他 本篇文章意于为各位大学生提供一些在编程上的疑惑 xff0c 希望能够对大家有帮助 作者 xff1a 悟空问答丨EXCEL进阶
  • C/C++编程笔记:C/C++中的strrchr()函数,到底该怎么用?

    在C 43 43 中 xff0c strrchr xff08 xff09 是用于字符串处理的预定义函数 cstring是字符串函数所需的头文件 此函数返回一个指针 xff0c 该指针指向字符串中最后一次出现的字符 我们想要找到的最后一个出现
  • C++编程书籍推荐:零基础入门书籍,学C++看它们就够了!

    如果你是一个没有编程经验的C 43 43 零基础小白 xff0c 或者有其它语言经验的C 43 43 初学者 xff0c 那么强烈推荐下面的十本零基础小白入门C 43 43 书籍 1 C 43 43 Primer 作者 xff1a Stan
  • 【ROS2 入门】虚拟机环境 ubuntu 18.04 ROS2 安装

    大家好 xff0c 我是虎哥 xff0c 从今天开始 xff0c 我将花一段时间 xff0c 开始将自己从ROS1切换到ROS2 xff0c 做为有别于ROS1的版本 xff0c 做了很多更新和改变 xff0c 我还是很期待自己逐步去探索R
  • 如何解压.gz的压缩文件

    如何解压 gz的压缩文件 gzip d xxx gz tar命令 root 64 linux tar cxtzjvfpPN 文件与目录 参数 xff1a c xff1a 建立一个压缩文件的参数指令 create 的意思 xff1b x xf
  • GPS经纬度坐标与XY坐标相互转换的python程序

    文章目录 前言一 说明二 函数1 import 和 常数2 GPS经纬度转XY坐标3 XY坐标转GPS经纬度 总结 前言 室外定位常用的是GPS xff0c 故编队队形 设定轨迹都是基于GPS经纬度坐标 而在仿真中我们通常会在XY坐标系下进
  • AD20 原理图设计流程

    Altium Designer 20 的原理图设计大致可以分为 9 个步骤 xff1a xff08 1 xff09 新建原理图 这是原理图设计的第一步 xff08 2 xff09 图纸设置 图纸设置就是要设置图纸的大小 xff0c 方向等信
  • JavaScript基础——DOM节点操作学习笔记

    目录 笔记 方法的使用 案例一 动态生成表格 案例二 下拉菜单 xff0c 鼠标经过和离开实现 案例全部代码 笔记 节点概述 1 网页中的任何内容都是节点 文字 标签 元素 文档等 节点至少有nodeType 节点类型 nodeName 节