JS高级编程 - - day03

2023-05-16

一、获取节点示例的方法

直接获取节点实例:
1.通过内置对象 document 获取,document对象是HTMLDocument的实例
2.获取根元素的实例:document.documentElement–html标签产生的实例,所属类为HTMLHtmlElement

<script>
        let hm = document.documentElement;
        console.log(hm);
    </script>

3.获取body节点实例:document.body–body实例, 所属类为HTMLBodyElement

<script>
        let hm = document.body;
        console.log(hm);
    </script>

4.获取head节点实例:document.head–head实例, 所属类为HTMLHeadElement

通过方法来获取实例:
1.document.querySelector(“属性选择器”)找到在文档内第一个符合对应选择器的实例
2.document.querySelectorAll(“属性选择器”)找到在文档内全部符合对应选择器的实例,并且按顺序放在一个类数组中返回
3.document.getElementById(“id值”)找到文档内第一个符合相应Id值的实例
4.document.getElementsByTagName(”标签名“)找到文档内全部对应标签名的实例,按顺序放入一个类数组中返回,等同于document.querySelectorAll("元素选器)
5.document.getElementsByName(”name属性的值“)找到文档内全部符合相应name值的实例,按顺序放入类数组中返回
6.document.getElementsByClassName(“class属性的值”)找到文档内全部符合相应class值的实例,按顺序放入类数组中返回

注意:以上方法的document可以换成任意的一个实例ele,ele可以调用以上所有方法,并且不再是在文档中找相应实例,而是找ele内部的相应实例。

实现原理:
1.对于类的原型中的成员,类的实例对象和该类子类实例对象都能访问。
2.推出子类实例对象,可以访问父类原型中的成员

面试题:
知识点:1.document是HTMLDocument类的实例
2.如果内部没有该函数会根据原型链往上一级找

<script>
	Node.prototype.show = function() {
		console.log("Node")
	}
	Document.prototype.show = function() {
		console.log("Document.prototype.show()");
	}
	HTMLDocument.prototype.show = function() {
		console.log("HtmlDocument.prototype.show()")
	}
	document.show();//"HtmlDocument.prototype.show()"
	
	console.log(document instanceof HTMLDocument)//true
</script>

根据节点实例中属性获取节点实例:
1.ele.parentNode得到父节点实例 (document.documentElement不可用,已经是最顶层)
2.ele.parentElement得到父元素结点的实例,ele.offsetParent可以得到body
3.ele.childNodes得到子节点的实例的数组
4.ele.children得到子节点的实例数组
5.ele.firstChild得到子节点实例中的第一个节点实例
6.ele.firstElementChild得到子元素节点实例中的第一个元素节点实例
7.ele.lastChild得到子节点实例中的最后一个节点实例
8.ele.lastElementChild得到子元素节点实例中的最后一个元素节点实例
9.ele.previousSibling得到同级前一个节点实例
10.ele.previousElementSibling得到同级前一个元素节点实例
11.ele.nextSibling得到同级后一个节点实例
12.ele.nextElementSibling得到同级后一个元素节点实例
13.ele.ownerDocument得到document

节点实例描述属性:
nodeName
元素节点实例 nodeName=大写标签名
文本节点实例 nodeName=#text
属性节点实例 nodeName=属性名
document nodeName=#document
注释节点实例 nodeName=#comment
nodeValue
对于元素节点实例, nodeValue=null
document, nodeValue=null
对于文本节点实例, nodeValue=文本值
注释节点实例, nodeValue=文本值
对于属性节点实例, nodeValue=属性值
nodeType
对于元素节点实例, nodeType=1
对于文本节点实例, nodeType=3
对于属性节点实例, nodeType=2
对于注释节点实例, nodeType=8
document, nodeType=9

元素节点实例方法contains:
判断元素ele内部是否有元素eletarget
ele.contains(eletarget)

<div id="mydiv1">
        <div id="mydiv2" name="mydd"></div>
        <div id="mydiv2" name="mydd"></div>
    </div>
    <script>
        let div2 = document.getElementById("mydiv2");
        let div1 = document.getElementById("mydiv1")
        console.log(div1.contains(div2));//true
    </script>

二、节点操作方法

删除节点元素实例:
1.删除指定的子节点实例
document.remove Child(node)
ele.removeChild(node);
2.删除自身
元素节点实例和文本节点实例都可以调用remove()方法,删除本身
Element.prototype.remove()----------------ele.remove();
CharacterData.prototype.remove()-------文本节点.remove();

创建元素节点实例和文本节点实例:
document.createElement(“标签名”);
document.createTextNode(“文本内容”);
ele.innerText = 文本内容
Node.prototype.cloneNode(true/false);
true: 克隆元素和它的子代元素,false只克隆元素本身

加入节点实例:
Node.property.appendChild(node)//追加在最后 ele.appendChild(…)
Node.property.insertBefore(被插入节点, 已经存在的节点)//把被插入节点插入到已经存在的节点前面 ele.insertBefore(…)
Node.property.hasChildNodes(node)
实战,使用元素节点实例调用方法

节点替换(删减):
Node.property.replaceChild(新子节点,旧子节点) ele.replaceChild(…)
实战,使用容器元素节点实例调用方法

innerHTML和innerText:
(实战:适用于容器元素节点)
Element.prototype.innerHTML 操作内部,能识别文档
HTMLElement.prototype.innerText 操作内部,只识别为text
HTMLElement.prototype.OuterHTML 操作内部和自身,能识别文档
HTMLElement.prototype.OuterText 操作内部和自身,只识别为text
都是属性,不赋值就是获取,赋值就是替换
ele.innerHTML
ele.innerText
ele.OuterHTML
ele.OuterText

属性class操作:
得到类名数组,该数组是类数组
HTMLElement.property.classList;-----ele.classList
增加类名
classList.add(“类名”)
移除类名
classList.remove(“类名”);
测试是否有实参指定的类名
classList.contains(“类名”);
用新的类名 替换以前的所有类
HTMLElement.property.className = “类名1 类名2…”; ele.className = “类名1 类名2…”;

属性style操作:
写入的值必须是字符串格式
div1.style.border=“1px solid red”;
property是组合单词必须变成小驼峰式写法,eg: div1.style.fontSize=“40px”;
property是float这样的保留字属性,前面应加“css”,eg:div1.style.cssFloat=“left”;
style只能操作内置样式

属性操作:
1.可以获取到元素相应属性的值
Element.prototype.getAttribute(“属性名”)
ele.getAttribute()
ele.属性名
当元素内没有该属性是区别:
ele.getAttribute() ------值为null
ele.属性名 ------值为 " "
2.为元素设置属性和属性值
Element.prototype.setAttribute(“属性名”,值)
ele.getAttribute()
3.可以判断元素内是否有相应属性值,返回值是布尔值
Element.prototype.hasAttribute(“属性名”)
ele.hasAttribute(“属性名”)
4.可以删除元素相应属性
Element.prototype.removeAttribute(“属性名”)
ele.removeAttribute(“属性名”)

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

JS高级编程 - - day03 的相关文章

  • python计算机视觉--全景图像拼接

    目录 一 RANSAC算法 1 1 RANSAC算法简介 1 2 算法基本思想和流程 1 3 RANSAC求解单应性矩阵 二 图像映射与全景拼接 2 1 简介 2 2 计算第二张图像与第一张图像之间的变换关系 2 3 将第二张图像叠加到第一
  • px4自带教程offboard下的gazebo多无人机编队仿真

    px4自带教程offboard下的gazebo多无人机编队仿真 主要教程参考这篇文章 xff0c offboard代码也源自下面链接 xff0c 增加了其他文件的配置细节 xff0c 链接如下 xff1a https blog csdn n
  • rotors_simulator与sitl_gazebo冲突导致报错“gzserver....”

    rotors simulator与sitl gazebo冲突导致报错 gzserver 创建时间2021 04 14 报错图片详见2021 04 14屏幕截图 总是出现gzserver symbol lookup error home zy
  • 安装ROS、gazebo、PX4基础细节及offboard控制

    新手参考教程安装ROS gazebo PX4基础细节及offboard控制 1 安装ROS 参考教程 2 安装PX4 参考教程 注 xff1a 1 在编译px4 Firmware前会经过安装步骤 xff0c 安装需要去github上git
  • 无人机模型记录

    今天看了这篇知乎 xff0c 收获非常大 xff0c 实现了一个非常基础的无人机动力学以及运动学模型 xff0c 包括公式推导等 xff0c 也解决了困扰我很久的问题 xff0c 在此基础上就可以加入控制算法 xff0c 设置轨迹等 htt
  • VMware安装Ubuntu20.04.5常见问题及解决方案

    文章目录 使用Xftp连接ubuntu系统ubuntu上安装指定版本nodejsubuntu设置连网ubuntu安装Java8ubuntu安装 deb格式软件ubuntu卸载 deb格式软件ubuntu中electron框架安装的缓存在如下
  • 无人机控制输入、PID控制

    无人机控制输入 PID控制 最近思路比较乱 xff0c 看到很多东西 xff0c 因为有各种控制 xff0c 需要在这里记录总结 控制输入 结合以下两个链接理解虚拟控制输入U1 U2 U3 U4 1 https blog csdn net
  • FreeRTOS学习(3)——任务创建和删除(静态)

    本代码是基于正点原子的STM32Mini板子 xff0c 结合其FreeRTOS课程进行学习 实验一 xff1a 设计4个任务 xff1a start task task1 task2 task3 start task任务 xff1a 用来

随机推荐

  • 华三交换机配置定时重启任务

    组网及说明 1 配置需求或说明 1 1 适用产品系列 本案例适用于如S7006 S7503E S7506E S7606 S10510 S10508等S7000 S7500E S10500系列 xff0c 且软件版本是V7的交换机 1 2 配
  • RTK差分通讯链路---Ntrip DTU(支持千寻位置,CORS站、自建站)

    在之前的博客中提到RTK差分通讯链路 电台 RTK技术的关键在于其获取了载波相位的观测量 xff0c 通过架设基准站和移动站 xff0c 利用电台的通讯方式 xff0c 使得移动站通过差分方式消除观测数据误差实现高精度 还有一种通讯方式 x
  • 北斗/GPS如何处理定位漂移?

    漂移是北斗 GPS导航时需要处理的问题之一 xff0c 漂移主要有两个方面 xff0c 第一 xff0c 速度过快 xff0c 以至于北斗 GPS的响应时间短于当前运行速度 xff0c 出现漂移 xff1b 第二 xff0c 在高大建筑密集
  • Jetson nx批量复制

    Jetson NX 批量克隆教程 文章目录 Jetson NX 批量克隆教程一 批量克隆是什么 xff1f 二 克隆步骤1 准备材料2 备份镜像3 克隆新SD卡 解压失败问题参考 一 批量克隆是什么 xff1f 辛辛苦苦在Jetson Xa
  • FreeRTOS一些常识笔记之快速上手

    一 为啥要用实时多任务操作系统 real time Operate System 简称有 xff1a RTOS xff0c 有如下的好处 用户无需关心时间信息 内核负责计时 xff0c 并由相关的API完成 xff0c 从而使得用户的应用程
  • Prometheus+node_exporter+grafana监控部署(上)

    目录 一 部署Prometheus 二 部署node exporter 三 把node exporter加载进Prometheus 四 部署grafana 一 部署Prometheus 1 从官网下载好Prometheus的安装包 2 解压
  • Zookeeper入门篇

    Zookeeper特性 xff1a Zookeeper xff1a 一个领导者 xff08 Leader xff09 xff0c 多个跟随者 xff08 Follower xff09 组成的集群 集群中只要有半数以上 xff08 不包括半数
  • 源码编译ROS的导航包navigation、编译navigation、也有安装navigation二进制包方式

    1 创建工作空间 span class token function mkdir span nav ws src p span class token function cd span nav ws src catkin init work
  • 深度无人机的视觉检测与跟踪神经网络:性能基准

    Unmanned Aerial Vehicle Visual Detection and Tracking using DeepNeural Networks A Performance Benchmark 深度无人机的视觉检测与跟踪神经网
  • 基于yolov5+fastreid+deepsort的TensorRT目标跟踪(C++版)复现过程

    基于yolov5 43 fastreid 43 deepsort的TensorRT目标跟踪 大部分的多目标跟踪项目都是用Python写的 xff0c 但是C 43 43 版本能够用TensorRT进行加速 xff0c 适合在边缘端部署 xf
  • JavaScript之定时器

    定时器 一 setTimeout 定时器二 停止 setTimeout 定时器三 setInterval 定时器四 清除setInterval 定时器五 电子时钟案例 在很多页面中 xff0c 我们都可以看到一些倒计时或者和时间相关的效果
  • JavaScript - 防抖与节流 基础代码

    防抖 无论触发了多少次函数 只执行最后一次函数 多次触发合并为一次 span class token tag span class token tag span class token punctuation lt span body sp
  • 一、QGC源码下载以及配置

    QGC V3 4版本 源码存放地址 https github com mavlink qgroundcontrol 下载方式 xff1a 1 git xff1a git clone https github com mavlink qgro
  • 无法被检测到的Linux恶意软件

    网络安全研究人员今天发现了一种完全无法被检测到的Linux恶意软件 xff0c 该恶意软件利用未公开的技术来监视并瞄准以流行的云平台 xff08 包括AWS xff0c Azure和阿里云 xff09 托管的可公开访问的Docker服务器
  • C++中的重难点看这一篇就够了

    sizeof 是一个运算符 xff0c 不是一个函数 看程序效率的快慢 xff0c 可以直接看其汇编语言程序的多少 扩展名 xff1a c语言 xff1a c c 43 43 xff1a cpp Java xff1a 先有类 xff0c 再
  • git 记录一次合并冲突的解决办法

    合并冲突 将远程分支拉到本地 xff0c 执行 git merge 39 分支名 39 时 xff0c 报错 xff1a CONFLICT content Merge conflict in 文件路径名 冲突出现在xx文件里面 Automa
  • 2020-11-10

    将Tomcat整合到Eclipse中 将Tomcat服务器整合到Eclipse工具中 xff0c 可以通过Eclipse启动 关闭tomcat服务器 xff0c 更重要的是 xff0c 可以非常方便的将在Eclipse中创建的Web项目发布
  • Ubuntu18.04搭建 SLAM环境(完美避坑,版本对应不报错)

    Ubuntu18 04搭建 SLAM环境 写到前言一 CMake g 43 43 git的安装二 Eigen的配置三 Sophus的配置四 OpenCV PCL Pangolin的配置安装1 OpenCV的配置2 PCL3 Pangolin
  • linux下运行.sh脚本提示syntax error: unexpected end of file的解决方法

    转载自 xff1a https www jb51 net article 179414 htm CentOS7运行 sh脚本提示syntax error unexpected end of file的解决方法 更新时间 xff1a 2020
  • JS高级编程 - - day03

    一 获取节点示例的方法 直接获取节点实例 xff1a 1 通过内置对象 document 获取 xff0c document对象是HTMLDocument的实例 2 获取根元素的实例 xff1a document documentEleme