ie插件获取dom_读书笔记《DOM编程艺术》DOM

  1. DOM的理解

1.1 D:当创建了一个网页并把它加载到Web浏览器中时,DOM就生成了,它将我们编写的网页文档转换成一个文档对象。

1.2 O:“对象”是一种自足的数据集合,相关联的变量称为这个对象的属性,只能通过这个对象调用的函数称为这个对象的方法。

JS中的对象可以分为三种类型

A、用户定义对象:程序员自行创建的对象。

B、内建对象:Array、Math、Date

C、宿主对象:由浏览器提供的对象。

JS最初版本中,非常重要的一些宿主对象就可以使用了,最基础的对象是Window对象。Window对象对应着浏览器窗口本身,这个对象的属性和方法通常统称为BOM。

更好理解:(window object model)窗口对象模型。

document对象的主要功能就是处理网页内容。接下来我们基本上只讨论document对象的属性和方法。

1.3 M:model map 某种事物的表现形式

DOM代表着加载到浏览器窗口的当前网页。浏览器提供了网页的地图,我们可以通过JS去读取这张地图。要想从DOM获得信息,必须先把各种表示和描述文档的“图例”弄明白。

DOM把文档表示为一颗家谱树

家谱树、节点树:使用parent、child、sibling等记号来表明家族成员之间的关系

根元素是html

1.4 节点: 文档是由节点构成的集合

  1. 元素节点:DOM的原子元素节点。这些元素在文档中的布局形成了文档的结构。
  2. 文本节点:文本节点总是被包含在元素节点的内部,或者间接包含。
  3. 属性节点:用来对元素做出更具体的描述,因为属性节点总是被放在起始标签里,所以属性节点总是被包含在元素节点中,所有的属性节点都被元素包含。
  4. CSS:DOM并不是唯一和网页结构打交道,CSS告诉浏览器应该如何显示一份文档的内容。

继承是CSS技术中的一项强大功能,类似于DOM,CSS也把文档的内容视为一颗节点树,节点树上的各个元素将继承其父元素的样式属性。

有时我们需要将某些样式作用于某个特定的元素,需要把元素与其他元素区分开,需要使用class属性或id属性。

calss属性:为相同的class属性值相同的所有元素定义同一种样式。

id属性:给页面里的某个元素加上一个独一无二的标识符。

id属性就像是一个挂钩,一头连接着文档里的某个元素,另一头连着CSS样式表里的某个样式。DOM也可以使用这种挂钩。

1.5 获取元素

有三种DOM方法可以获取元素节点:

  1. getElementById

返回一个对象。

document对象特有的函数。

document.getElementById(‘xxx’);

abc83eda63f80ee110f5014e26c01a9a.png

05a3d938ef8a77e85315054d8891eb2b.png

文档中的每一个元素都是一个对象,利用DOM提供的方法能得到任何一个对象。

2.getElementsByTagName

返回一个对象数组

document.getElementsTagName(‘li’);

82bf9e01145adec02f969065712e87af.png

44765b185c2eeffc32565bd832343759.png

即使这个标签只有一个元素,也返回一个数组。

3.getElementsByClassName

返回一个对象数组

document.getElementsClassName(‘yyy’);

e22ac32da676ae2229d5dd9f2609d483.png

da7358938c80a305d9bea327dbff6d49.png

也可以结合使用,比如,只要id为xxx的里面的元素。

0fbbe40db2e3c162f13e872f5b5defe7.png

672e23c3a119abf359883249c559f767.png

这个函数,IE8以下有兼容问题。不过,现在,没有继续兼容IE的了吧?瑟瑟发抖……

1.6 获取和设置属性(只能用于元素节点)

A、getAttribute

object.getAttribute(attribute);

getAttribute方法不属于document对象,只能通过元素节点对象调用。

e3b6f16add7bcc4dea2e79fb2f48bee7.png

699f8824a271a3a9e57c7fd4527c1174.png

如果它们没有某个属性,将会是返回空白或者null,至于是哪个,要看是什么浏览器。

966e762d42bd5c3e64961f80c9eb4e91.png

8f7a8fa9ac6e1476bbc80247fb90080a.png

B、setAttribute

对属性节点的值做出修改

object.setAttribute(attribute,value)

用在本身就有这个属性的元素上,就会将原来的值覆盖掉。

d704fb78e9b0b2677ce80ff43cf6e428.png

740072d3a5dde742063840783a80ed12.png

bd7185f0e36c2042532ed275bbb5fefd.png

但是,setAttribute做出的修改不会反映在文档本身的源代码里。

这种表里不一的现象源自DOM的工作模式:

先加载文档的静态内容,再动态刷新,动态刷新不影响文档的静态内容。

这正是DOM的真正威力:对页面内容进行刷新却不需要在浏览器里刷新页面。

tips:这五种方法,是将要编写的许多DOM脚本的基石。

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

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

相关文章

针对Fluent-Bit采集容器日志的补充

hello,之前我写过《一套标准的ASP.NET Core容器化应用日志收集分析方案》,在公司团队、微信公众号、Github上反映良好。其中配置Fluent-bit使用Forward协议收集容器日志,需要在Docker-Compose App配置Loging DriverFluentd实践中,…

在每个运行中运行多个查询_在Kubernetes中运行OpenEBS

什么是OpenEBS?现在,OpenEBS是kubernetes下与容器原生和容器附加存储类型相关通用的领先开源项目之一。 通过为每个工作负载指定专用的存储控制器,OpenEBS遵循容器附加存储或CAS的脚步。 为了向用户提供更多功能,OpenEBS具有精细的…

如何在 C# 8 中使用默认接口方法

C# 8 中新增了一个非常有趣的特性,叫做 默认接口方法 (又称虚拟扩展方法),这篇文章将会讨论 C# 8 中的默认接口方法以及如何使用。在 C# 8 之前,接口不能包含方法定义,只能在接口中定义方法签名,还有一个就是接口的成员…

.Net下二进制形式的文件(图片)的存储与读取 [ZT]

.Net下图片的常见存储与读取凡是有以下几种:存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[].1.参数是图片路径:返回Byte[]类型: publicbyte[] GetPictureData(stringimagepath) { /**…

c++tcp接收文件缓存多大合适_网易面经:深剖TCP协议的流量控制和拥塞控制,你懂了吗?...

1.自我介绍项目2.RPC框架和普通http有什么区别和优势? 基于Tcp封装还是http封装的3.rpc是长连接吗?如果要传输一个特别大的文件 底层还是基于流吗? Nio是一个什么IO模型?4.github了的watch star fork5.异常和error的区别&#xff…

如何在 ASP.Net Core 中使用 LoggerMessage

ASP.NET Core 是一个开源的、跨平台的、轻量级模块化框架,可用于构建高性能、可伸缩的web应用程序,你也许不知道 ASP.NET Core 中有一个藏得很深,而且非常强大的特性,那就是 LoggerMessage,与内建的 Logger 相比&#…

模拟器显示空白图片_Kawaks街机模拟器,还是小时候的味道!

APP菜园打造属于我们自己的APP帝国1.打开支付宝app,首页搜索 “8221050” 然后点击快捷功能,天天领红包。2.软件领取流程:1.认真阅读下软件介绍;2.找到图片下方的“获取链接”复制;3.打开手机上的浏览器粘贴链接搜索(…

ASP.NET Core 查看应用状态和统计

在日常开发中,我们需要关注 .NET 应用的资源使用情况,方便排查问题和扩容。通过 Ajax 请求获取统计信息,展示成图表,如下图:CLRStats 插件,一个统计 .NET 应用资源使用情况的插件,包含&#xff…

【Vscode】调试DotNet Core代码

Visual Studio作为宇宙第一的IDE,开发调试.net core app,无一能出其右,我们还需要去了解Visual Studio Code吗?答案是肯定。杀鸡焉用牛刀:就一个hello world的Console App,还需要打开Visual Studio吗&#…

pandownload 卢本伟_PanDownload复活了!60MB/s!附下载地址

最近几天,听说PanDownload 复活了有人接盘了,重新制作上线推出了更加强劲的复活版!但是笔者去下载了一下,发现并不能使用于是经过百般搜寻,发现被人提供的已经是旧版了于是,我找到了最新版,9月2…

linux安装rz命令_Linux 安装dep安装包命令

rootlsy-ubuntu:~# dpkg -i sublime-text_build-3126_amd64.deb 正在选中未选择的软件包 sublime-text。(正在读取数据库 ... 系统当前共安装有 256092 个文件和目录。)正准备解包 sublime-text_build-3126_amd64.deb ...正在解包 sublime-text (3126) ...正在设置 sublime-tex…

Excel分列功能的妙用

我们用left函数可以将姓名中的姓和名分开了,说实话,这个方法比较笨,因为EXCEL中提供了分列功能。 我们可以看下面这个例子,原始数据中含有编号,而且随着行数的增加,编号位数也在增加,这时就不能…

IdentityServer4之Implicit和纯前端好像很配哦

前言上一篇Resource Owner Password Credentials模式虽然有用户参与,但对于非信任的第三方的来说,使用这种模式是有风险的,所以相对用的不多;这里接着说说implicit隐式模式,这种模式比较适合于纯前端客户端&#xff0c…

docker 安装kafka_laradock 中如何安装 Laravel Dusk

laradock 中如何安装 Laravel Dusk?导语在本地安装 Laravel Dusk 一直失败,查了文档才发现在 laradock 中并不是只需要 composer require 就可以的,还有其他配置。下面记录一下。配置 laradock1.切换到 laradock 目录中,将 worksp…

.NET 中依赖注入组件 Autofac 的性能漫聊

Autofac 是一款超赞的 .NET IoC 容器 ,在众多性能测评中,它也是表现最优秀的一个。它管理类之间的依赖关系, 从而使 应用在规模及复杂性增长的情况下依然可以轻易地修改。它的实现方式是将常规的.net类当做 组件 处理。简单的性能测试在 LINQPad 中&…

c语言 extern_Visual C++ 6.0环境中C语言extern 变量使用过程报错

extern 变量称为外部存储变量。extern声明了程序中将要用到但尚未定义的外部变量。本次错误的解决方法同样适用于外部函数。外部函数就是可以被其他源文件调用的函数,定义外部函数时使用extern进行修饰。首先,分别创建两个源文件“ex1.c”和“ex2.c”。其…

盘点大厂的那些开源项目 - 华为

HarmonyOS鸿蒙系统(HarmonyOS),是第一款基于微内核的全场景分布式OS,是华为自主研发的操作系统。华为会率先部署在智慧屏、车载终端、穿戴等智能终端上,未来会有越来越多的智能设备使用开源的鸿蒙OS。鸿蒙 OS 底层由鸿…

ubuntu mysql怎么备份_Ubuntu下MySQL备份与异地备份

下面是一则MySQL备份实例,在Ubuntu下测试通过。完成任务是本地备份。可用于服务器端。#! /bin/bashecho "backupmysql V1.0"###date stamp###datestamp$(date %Y-%m-%d)###path ###startdir/home/user/mysqlbackup###bakfile prefix###fileprefixsqlecho …

java 位运算_java学习之运算符与表达式(四)

(6)位运算符位运算是指对整数按二进制的位进行运算。位运算用于整数或字符类型。有7个&#xff1a;~(非)、&(与)、&#xff5c;(或)、^(异或)、<>(右移)、>>>(无符号右移)。例&#xff1a;以byte类型4为例。byte类型占用1个字节。4的二进制为&#xff1a;00…

【Http】一文备忘Http状态码(406,415,422)

最近在调试接口时&#xff0c;web api 报了一个415状态码。好久没见到这个状态码&#xff0c;一时还真不知道啥情况。所以&#xff0c;人的大脑是有遗忘规律的&#xff0c;为了加深印象&#xff0c;所以我觉得我有必要再复习一下。1.HTTP的状态码 首先复习一下所有的状态码。1x…