JavaScript DOM 编程艺术学习笔记(一):静态标记

2023-10-29

JavaScriptDOM编程艺术

学习笔记(一):静态标记

DOM

  • DOM脚本程序设计:涵盖了使用任何一种支持DOM API的程序设计语言去处理任何一种标记文档的情况。
  • DOM是程序设计语言和标记文档之间的接口,它将文档表示成一棵节点树,每个节点都对应文档中的一个元素,以供程序设计语言处理。

网页的三个层次

  • 结构层:HTML/XHTML-搭建文档结构
  • 表示层:CSS-设置文档呈现效果
  • 行为层:JavaScript/DOM-实现文档行为

对象

  • 用户定义对象
  • 内建对象:JavaScript语言里面的对象,如Array、Math、Date等。
  • 宿主对象:浏览器提供的对象,如Window、Document等。

节点

  • 元素节点:DOM树的骨架,每一个HTML标签都是一个元素节点。
  • 文本节点:元素节点里面包含的文本内容。
  • 属性节点:元素节点的属性单独看成一种节点,如:id、class属性。

注:一份文档中,每一个节点都是一个对象


DOM访问

1. 元素节点:

  element.getElementById("*id*")
  element.getElementByTagName("*tag_name*")
  element.getElementByClassName("*class_name*")


例1:document.getElementById(id), 在全文档搜索并返回ID值为id的元素;

例2:Jone.getElementByTagName(“chage”), 在Jone元素的子节点中,搜索元素title名字为”change”的元素,并返回一个数组

2.属性节点:

element.getAttribute(attribute) 
element.setAttribute(attribute, value)

setAttribute函数中的attribute属性如果原element不存在,则首先创建该属性,再设置其中的值。

3. 文本节点:

node.nodeValue

注意:这里的node一定要是文本节点,它一般是一个元素几点的子节点。节点类型可以用node.nodeType来确定。元素节点值为1,属性节点值为2,文本节点值为3.

4. 子节点:

element.childNodes:返回全部子元素的数组
node.firstChild = node.childNodes[0]
node.lastChild = node.childNodes[node.childNoes.length - 1]

JavaScript设计原则

1. 平稳退化

考虑到浏览器不能加载JS的情况(如现阶段大多数的搜索引擎),用户仍能正常访问资源,只是损失了用户体验。

2. 渐进增强

从核心内容开始构建,然后逐渐加强内容。不应该用DOM技术或CSS来向网页上添加重要的内容。否则很难实现平稳退化。
例子:hij

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

JavaScript DOM 编程艺术学习笔记(一):静态标记 的相关文章

  • 使用时间序列数据和scaleBand指定D3条形图上的刻度

    我尝试为具有时间序列数据的 d3 v4 条形图指定多个刻度和多个刻度标签 如下图所示 基于本教程 https bl ocks org zigahertz 1ee4965ff76514517bb7ce6af21e5d44我有一个处理时间序列数
  • 如何使单词中的每个字母在悬停时发生变化

    假设我的网站上某个段落中有一个单词 IamGreat 我希望它在悬停时更改为 Good4you 但是 我不想更改整个单词 而是希望每个字母单独更改 因此 如果我将鼠标悬停在字母 I 上 它将变成字母 G 字母 r 将变成数字 4 等 这两个
  • 从提交的表单中转义字符串中的字符

    每次发布帖子时 我都会得到转义字符 gt gt gt 我有一个多步骤表单 它将数据从一种表单传输到另一种表单 我将这些值与准备好的语句一起保存在数据库中 数据库中的值当前看起来像Paul s House 用户应该可以在字符串中使用单引号和双
  • 有没有一种方法可以使页面布局在 100% 缩放下完美契合,同时又尊重更大的缩放系数?

    有多种方法可以布局网页 使其适合浏览器视口 DOMwindow 当我说 适合 时 我包括更改所用字体的大小 更改 DIV IMG 和其他渲染元素的宽度和高度 以及允许元素 流畅 移动 目标是使页面在所有显示设备 从小型手机到大桌面屏幕 上看
  • 下拉菜单导致滚动条

    我用过这个W3C 的示例 http www w3schools com bootstrap bootstrap dropdowns asp div class dropdown div
  • 如何使链接悬停时的背景图像模糊?

    当您用鼠标光标悬停链接时 我想让我的背景图像模糊 5 像素 有什么简单的方法可以实现这一点吗 我有点纠结于类和 id 在这里 pic background url http www metalinjection net wp content
  • 如何使用ckeditore通过ajax发送数据?

    我在 django 中有一个表格 这是 撰写邮件 形式 我将此表单从视图发送到我的模板 然后应用 ckeditor 来更改正文样式 我希望通过 ajax 发布此表单 当使用 ckeditor 时 body 字段的值不会随 request P
  • AngularJS Youtube 播放器嵌入非常大的播放列表

    我目前正在构建一个 AngularJS 应用程序 我知道它有点过时 但我对它很有信心 我的应用程序需要嵌入一个 YouTube 播放器 其中包含一个非常大的播放列表 大约 1500 个项目 但我无法对其进行编码 以便它实际上可以嵌入超过 2
  • 在 JavaScript/ActionScript 中重新定义 Math.constructor 有任何实际用途吗?

    Math 对象没有原型属性 但有构造函数属性 在任何情况下重新定义构造函数会有用吗 The Math对象 准确地说 由初始值引用的对象MathECMAScript 全局对象的属性 not have a constructor属性 请参阅EC
  • 在 WordPress 和 woocommerce 中禁用 zxcvbn.min.js

    如您所知 zxcvbn min js 约为 400kb 并且默认在 WordPress 网站中加载 我想知道如何阻止加载此 JavaScript 库 因为我不想在我的网站中检查密码长度 将以下内容添加到主题的 function php 或自
  • 带有子节点的拖放区域

    我有一个带有多个子节点的拖放区域 主要元素有dropenter and dropleave事件 但是 如果您将文件拖动到主元素内部和子节点上方 则dropleave被触发 如何处理 以便dropleave仅当拖动的元素和鼠标位于主元素之外时
  • JavaScript 匿名函数语法

    下面两个块有什么区别 block 1 console log anonymous block block 2 function anon console log anonymous block 2 我在 Netbeans 中运行了这个 使用
  • 创建响应式眼睛焦点图标

    我一直在尝试制作响应式彩色眼睛焦点图标 但到目前为止我所尝试的一切均不成功 我试图在某种程度上复制真眼的颜色 我使用边框 框阴影来获取颜色 但该部分没有缩放 也尝试过轮廓 但也失败了 那个甚至不是圆的 div 的高度当前是静态的 但我希望它
  • iOS 11 getUserMedia 不起作用?

    苹果公司发表声明称getUserMedia将在 iOS 11 上完全正常运行 安装 iOS 11 Beta 版本 5 后 我确实收到一条消息 表明我的网站请求访问我的相机和麦克风 但似乎是这样的 video src window URL c
  • Angular 8 webpack-bundle-analyzer 寻找错误的polyfill 文件

    无论我做什么 构建项目后我都会收到以下错误 Error parsing bundle asset
  • “WebSocket 在连接建立之前已关闭”是什么意思?

    我正在使用 JavaScript 和联盟平台 http www unionplatform com我该如何诊断这个问题 非常感谢 如果你去http jsbin com ekusep 6 edit http jsbin com ekusep
  • Electron Auth0Lock“原始文件://不允许”

    尝试让 auth0 与我的电子应用程序一起使用 当我按照默认教程并尝试使用用户名 密码 身份验证进行身份验证时 锁定失败并显示 403 错误 并响应 不允许使用 Origin file 我还在 auth0 仪表板中客户端设置的允许来源 CO
  • IE7 问题 - 当禁用文件下载自动提示时无法下载流式文件

    我的应用程序是基于 J2EE JSP Servlet 的 当我尝试从 JSP 打开新窗口 弹出窗口 并调用 Servlet 操作 例如 Streamer do 以在该弹出窗口内传输 PDF 文件时 我遇到了问题 问题 当 IE 7 gt 工
  • CSS交付优化:如何推迟CSS加载?

    我在尝试着优化 CSS 交付遵循针对开发人员的谷歌文档https developers google com speed docs insights OptimizeCSSDelivery example https developers
  • 如何防止IE11弹出(您确定要离开此页面)

    我正在处理一个页面 除了一个下拉菜单可供选择外 我无需输入任何内容 但在 IE11 中 当我尝试转到下一页时 它会弹出该消息 我想阻止这种弹出的发生 所以我只是想知道 IE11 中弹出窗口的默认行为是什么 因为它不会出现在 Chrome 或

随机推荐

  • C++实现鼠标点击其他程序

    1 主要是SendInput函数 代码如下 初始化 INPUT input 0 input type INPUT MOUSE dx dy代表的是进行点击的坐标 下面显示的是 950 150 input mi dx static cast
  • 【Proteus仿真】555组成的多谐振荡器电路

    Proteus仿真 555组成的多谐振荡器电路 Proteus仿真演示 多谐振荡器电路 多谐振荡器电路是一种矩形波产生电路 属于数字电路 三极管不工作在放大线性区 这种电路不需要外加触发信号便能连续地 周期性地自行产生矩形脉冲 该脉冲是由基
  • Stable Diffusion:ChatGPT与AI绘画,引领艺术的未来

    人工智能 AI 的快速发展正在为各个领域带来革命性的变化 其中包括艺术与创意领域 AI绘画是一种将人工智能技术与艺术创作相结合的新兴范式 通过深度学习和生成对抗网络 GAN 等技术 AI绘画可以生成各种富有创意和想象力的艺术作品 本文将探讨
  • python - __str__ 和 __repr__

    内建函数str 和repr representation 表达 表示 或反引号操作符 可以方便地以字符串的方式获取对象的内容 类型 数值属性等信息 str 函数得到的字符串可读性好 故被print调用 而repr 函数得到的字符串通常可以用
  • Docker+docker-compose+nginx部署已有项目

    项目背景 在异地服务器拷docker相关项目到新的服务器 具体操作 1 新服务器安装好docker 2 新服务器安装好docker compose 3 从老服务器拷贝镜像到新服务器 4 新服务器导入镜像 5 构建项目地址挂载目录 找到doc
  • 用U盘作启动盘装Windows10系统整套流程 纯净版(不用其他乱七八糟的软件)(macOS适用)

    简介 本人的电脑是MacBook Air 2014年版的 因为内存小而且文件杂乱 所以一下子都给格式化了 但是要用Mac自带的恢复系统的话需要连接校园网 连接校园网又需要打开网页输入账号和密码 我们学校的校园网是这样的 所以只能用U盘作为格
  • gqrx编译过程记录

    gqrx编译过程记录 目标 环境 编译 下载源代码 建立编译位置 修改CMakefile txt中的模块 编译安装 运行界面 没有更多 目标 在ubuntun 20 04桌面版编译gqrx 通过USRP 205mini实现收音机功能 环境
  • 【解决】docker容器怎么使用宿主机的IPv6地址

    在IPv4时代 我们对外访问都是端口映射 都没有公网IP 但是在IPv6时大家都有公网IP 可能需要容器地址和主机地址一致 可以在docker run时使用参数 network host 则此容器网络和宿主机一致 docker run ne
  • AQS详解

    AQS详解 文章目录 AQS详解 AQS简单介绍 AQS原理 AQS原理概览 AQS对资源的共享方式 AQS定义两种资源共享方式 Exclusive 独占 Share 共享 AQS底层使用了模板方法模式 Semaphore 信号量 Coun
  • 浅谈可重入锁

    一 可重入锁 递归锁 1 概念 同一个线程在外层方法获取锁的时候 再进入该线程的内层方法会自动获取锁 前提是 锁对象是同一个对象 不是因为之前已经获取过还没有释放而阻塞 2 java中的ReentrantLock和synchronied都是
  • 关于Gdi+和GdiplusStartup

    GDI 实际上是一组类的定义 封装了gdi 的几乎所有API 当然使用方法就要从这些 例子 里边寻找了 本文正是尝试用GDI 写一个纯SDK的程序 语言自然是我最喜欢的语言WIN32ASM 这个程序很简单 就是用GDI 画了一条直线 算是抛
  • HCIA-FusionCompute华为企业级虚拟化

    一 云计算 按需付费 集中资源对外提供服务 1 云本身没有资源 云是资源整合者 整合底层的所有计算机资源 cpu 内存 磁盘等 云计算是一种模型 它可以实现随时随地 随需应变地从可配置计算资源共享池中获取所需的资源 例如 网络 服务器 存储
  • BigDecimal 问题小结

    BigDecimal 加法 add 函数 乘法multiply 函数 除法divide 函数 绝对值abs 函数 减法subtract 函数 ROUND CEILING 向正无穷方向舍入 ROUND DOWN 向零方向舍入 ROUND FL
  • 【Redis】新增数据结构

    BitMap位图 Redis提供了Bitmaps这个 数据类型 可以实现对位的操作 1 Bitmaps本身不是一种数据类型 实际上它就是字符串 key value 但是它可以对字符串的位进行操作 2 Bitmaps单独提供了一套命令 所以在
  • RabbitMQ与SpringBoot整合实战

    SpringBoot整合RabbitMQ SpringBoot与RabbitMQ集成非常筒単 不需要做任何的额外设置只需要两步即可 step1 引入相关依赖 spring boot starter amqp step2 対applicati
  • PyTorch-02梯度下降Gradient Descent、回归案例、手写数字识别案例

    PyTorch 02梯度下降Gradient Descent 回归案例 手写数字识别案例 了解梯度下降 梯度下降是深度学习的精髓 整个deep learning是靠梯度下降所支撑的 可以求解一个非常难的函数 使用的方法就是梯度下降算法 求一
  • 群体智能优化算法--烟花算法(附优化参数的通用代码)

    烟花算法是由北京大学谭营教授提出了烟花算法 这是一种既简单又具有较强优化能力的算法 根据烟花爆炸的原理 每个烟花爆炸之后会选择最好的烟花作为下一次爆炸的烟花 而且在多个烟花爆炸的同时 每个烟花都是相互独立的 寻找最优爆炸烟花只在自身本身爆炸
  • C语言不同操作系统不同编译器,msvc mingw gcc cmake VS MSVC的理解

    编译器的编译有三步 1 源代码生成汇编码 2 汇编语言生成中间代码 obj类型 一个源文件一个 obj 每个源文件通常编译成一个对应的目标文件 obj或 o 但在某些情况下 多个源文件可以编译成一个目标文件 3 连接 在汇编里称Link 在
  • 高并发网络编程之epoll详解

    在linux 没有实现epoll事件驱动机制之前 我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序 在大数据 高并发 集群等一些名词唱得火热之年代 select和poll的用武之地越来越有限 风头已经被epoll
  • JavaScript DOM 编程艺术学习笔记(一):静态标记

    JavaScriptDOM编程艺术 学习笔记 一 静态标记 DOM DOM脚本程序设计 涵盖了使用任何一种支持DOM API的程序设计语言去处理任何一种标记文档的情况 DOM是程序设计语言和标记文档之间的接口 它将文档表示成一棵节点树 每个