JavaScript 操作 HTML DOM (文档对象模型) 相关知识点

HTML DOM 树 

 

通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

  • JavaScript 能够改变页面中的所有 HTML 元素
  • JavaScript 能够改变页面中的所有 HTML 属性
  • JavaScript 能够改变页面中的所有 CSS 样式
  • JavaScript 能够对页面中的所有事件做出反应

 

查找 HTML 元素

通常,通过 JavaScript,您需要操作 HTML 元素。

为了做到这件事情,您必须首先找到该元素。常用的有三种方法来做这件事

  • 通过 id 找到 HTML 元素          var x=document.getElementById("intro");
  • 通过标签名找到 HTML 元素        var y=x.getElementsByTagName("p");
  • 通过类名找到 HTML 元素        var x=document.getElementsByClassName("intro");

可以组合查找,例如

查找 id="main" 的元素,然后查找 id="main" 元素中的所有 <p> 元素:

var x=document.getElementById("main");
var y=x.getElementsByTagName("p");

 

事件句柄 (Event Handlers)

属性此事件发生在何时...
onabort图像的加载被中断。
onblur元素失去焦点。
onchange域的内容被改变。
onclick当用户点击某个对象时调用的事件句柄。
ondblclick当用户双击某个对象时调用的事件句柄。
onerror在加载文档或图像时发生错误。
onfocus元素获得焦点。
onkeydown某个键盘按键被按下。
onkeypress某个键盘按键被按下并松开。
onkeyup某个键盘按键被松开。
onload一张页面或一幅图像完成加载。
onmousedown鼠标按钮被按下。
onmousemove鼠标被移动。
onmouseout鼠标从某元素移开。
onmouseover鼠标移到某元素之上。
onmouseup鼠标按键被松开。
onreset重置按钮被点击。
onresize窗口或框架被重新调整大小。
onselect文本被选中。
onsubmit确认按钮被点击。
onunload用户退出页面。

 

鼠标 / 键盘属性

属性描述
altKey返回当事件被触发时,"ALT" 是否被按下。
button返回当事件被触发时,哪个鼠标按钮被点击。
clientX返回当事件被触发时,鼠标指针的水平坐标。
clientY返回当事件被触发时,鼠标指针的垂直坐标。
ctrlKey返回当事件被触发时,"CTRL" 键是否被按下。
metaKey返回当事件被触发时,"meta" 键是否被按下。
relatedTarget返回与事件的目标节点相关的节点。
screenX返回当某个事件被触发时,鼠标指针的水平坐标。
screenY返回当某个事件被触发时,鼠标指针的垂直坐标。
shiftKey返回当事件被触发时,"SHIFT" 键是否被按下。

 

addEventListener() 方法

语法:element.addEventListener(event, function, useCapture);

useCapture默认值为 false, 即冒泡传递,当值为 true 时, 事件使用捕获传递。

第一个参数是事件的类型 (如 "click" 或 "mousedown").,

                       注意:不要使用 "on" 前缀。 例如,使用 "click" ,而不是使用 "onclick"。

第二个参数是事件触发后调用的函数。

第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。

                     addEventListener() 方法允许向同一个元素添加多个事件,且不会覆盖已存在的事件

                     removeEventListener() 方法移除由 addEventListener() 方法添加的事件句柄

 

addEventListener浏览器支持

表格中的数字表示支持该方法的第一个浏览器的版本号。

注意: IE 8 及更早 IE 版本,Opera 7.0及其更早版本不支持 addEventListener() 和 removeEventListener() 方法。但是,对于这类浏览器版本可以使用 detachEvent() 方法来移除事件句柄:

element.attachEvent(event, function);
element.detachEvent(event, function);

//跨浏览器解决办法
var x = document.getElementById("myBtn");
if (x.addEventListener) {                    // 所有主流浏览器,除了 IE 8 及更早版本x.addEventListener("click", myFunction);
} else if (x.attachEvent) {                  // IE 8 及更早版本x.attachEvent("onclick", myFunction);
}

 

创建新的 HTML 元素 (节点) - appendChild()


<div id="div1">
<p id="p1">这是一个段落。</p>
<p id="p2">这是另外一个段落。</p>
</div><script>
var para = document.createElement("p");
var node = document.createTextNode("这是一个新的段落。");
para.appendChild(node);var element = document.getElementById("div1");
element.appendChild(para);
</script>

 

创建新的 HTML 元素 (节点) - insertBefore()


<div id="div1">
<p id="p1">这是一个段落。</p>
<p id="p2">这是另外一个段落。</p>
</div><script>
var para = document.createElement("p");
var node = document.createTextNode("这是一个新的段落。");
para.appendChild(node);var element = document.getElementById("div1");
var child = document.getElementById("p1");
element.insertBefore(para, child);
</script>

 

移除已存在的元素


<div id="div1">
<p id="p1">这是一个段落。</p>
<p id="p2">这是另外一个段落。</p>
</div><script>
var parent = document.getElementById("div1");
var child = document.getElementById("p1");
parent.removeChild(child);
</script>

 

替换 HTML 元素 - replaceChild()


<div id="div1">
<p id="p1">这是一个段落。</p>
<p id="p2">这是另外一个段落。</p>
</div><script>
var para = document.createElement("p");
var node = document.createTextNode("这是一个新的段落。");
para.appendChild(node);var parent = document.getElementById("div1");
var child = document.getElementById("p1");
parent.replaceChild(para, child);
</script>

 

HTMLCollection 对象

  • getElementsByTagName() 方法返回 HTMLCollection 对象。
  • HTMLCollection 对象类似包含 HTML 元素的一个数组。
  • HTMLCollection 对象的 length 属性定义了集合中元素的数量。
  • HTMLCollection 不是一个数组!
  • HTMLCollection 看起来可能是一个数组,但其实不是。
  • 你可以像数组一样,使用索引来获取元素。
  • HTMLCollection 无法使用数组的方法: valueOf(), pop(), push(), 或 join() 。

 

NodeList  JavaScript HTML DOM 节点列表

  • NodeList 对象是一个从文档中获取的节点列表 (集合) 。
  • NodeList 对象类似 HTMLCollection 对象。
  • 一些旧版本浏览器中的方法(如:getElementsByClassName())返回的是 NodeList 对象,而不是 HTMLCollection 对象。
  • 所有浏览器的 childNodes 属性返回的是 NodeList 对象。
  • 大部分浏览器的 querySelectorAll() 返回 NodeList 对象。
  • NodeList 对象 length 属性定义了节点列表中元素的数量。

 

HTMLCollection 与 NodeList 的区别

  • HTMLCollection 是 HTML 元素的集合。
  • NodeList 是一个文档节点的集合。
  • NodeList 与 HTMLCollection 有很多类似的地方。
  • NodeList 与 HTMLCollection 都与数组对象有点类似,可以使用索引 (0, 1, 2, 3, 4, ...) 来获取元素。
  • NodeList 与 HTMLCollection 都有 length 属性。
  • HTMLCollection 元素可以通过 name,id 或索引来获取。
  • NodeList 只能通过索引来获取。
  • 只有 NodeList 对象有包含属性节点和文本节点。

节点列表不是一个数组!

节点列表看起来可能是一个数组,但其实不是。

你可以像数组一样,使用索引来获取元素。

节点列表无法使用数组的方法: valueOf(), pop(), push(), 或 join() 。

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

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

相关文章

[css] 举例说明你对指针事件(pointer-events)的理解

[css] 举例说明你对指针事件&#xff08;pointer-events&#xff09;的理解 pointer-events CSS 属性指定在什么情况下 (如果有) 某个特定的图形元素可以成为鼠标事件的 target。 当point-events 为none时&#xff0c;比如a连接不再生效个人简介 我是歌谣&#xff0c;欢迎和大…

JS运行三部曲

语法分析 预编译 解释执行 下面两句话能解决问题&#xff0c;但解决不了深入的问题&#xff0c;其实原理是 预编译产生的两个现象&#xff08;规律&#xff09;。 函数声明整体提升变量 声明提升 预编译前奏 imply global 暗示全局变量&#xff1a;即任何变量&#xff…

[BZOJ3791]作业

Description 众所周知&#xff0c;白神是具有神奇的能力的。比如说&#xff0c;他对数学作业说一声“数”&#xff0c;数学作业就会出于畏惧而自己完成&#xff1b;对语文作业说一声“语”&#xff0c;语文作业就会出于畏惧而自己完成。今天&#xff0c;语文老师和数学老师布置…

[css] 如何用css实现把“我不爱996”变成“699爱不我”?

[css] 如何用css实现把“我不爱996”变成“699爱不我”&#xff1f; unicode-bidi 属性与 direction 属性一起使用&#xff0c;来设置或返回文本是否被重写&#xff0c;以便在同一文档中支持多种语言。 用direction属性设置rtl表示从右到左&#xff0c;默认是ltr从左到右的&am…

[css] scroll-snap-align属性的应用场景是什么?

[css] scroll-snap-align属性的应用场景是什么&#xff1f; 滚动一个列表时&#xff0c;控制列表中一个块始终完全在可视区内,如果滚动到一半可以回弹&#xff0c;保持整个块都在可视区。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c;…

STM32 软件模拟 IIC 代码,标准库、HAL库可用

1 #ifndef _IIC_H2 #define _IIC_H3 4 #include "stdio.h" 5 #include "stm32f1xx_hal.h"6 7 8 /* 定义控制 SDA SCL 的宏 标准库版9 #define I2C_SDA_UP GPIO_SetBits (GPIOC,GPIO_PIN_8) //SDA高电平 10 #define I2C_SDA_LOW GPIO_…

作用域及上下文理解

书本中的解释 [[scope]]:每个javascript函数都是一个对象&#xff0c;对象中有些属性我们可以访问&#xff0c;但有些不可以&#xff0c;这些属性仅供javascript引擎存取&#xff0c;[[scope]]就是其中一个。[[scope]]:指的就是我们所说的作用域&#xff0c;其中存储了运行期上…

[css] css中Scroll-behavior属性有什么应用场景?

[css] css中Scroll-behavior属性有什么应用场景&#xff1f; 当用户手动点击导航或者API调用导致触发滚动操作时&#xff0c;scroll-behavior属性可以为滚动框设定滚动行为。auto表示立即滚动到指定位置&#xff0c;smooth则表示平滑过渡&#xff0c;需要一定的过度时间滚动到…

windows下安装ElasticSearch的Head插件

es5以上版本安装head需要安装node和grunt(之前的直接用plugin命令即可安装) (一)从地址&#xff1a;https://nodejs.org/en/download/ 下载相应系统的msi&#xff0c;双击安装。 &#xff08;二&#xff09;安装完成用cmd进入安装目录执行 node -v可查看版本号 &#xff08;三&…

立即执行函数

定义&#xff1a; 此类函数没有声明&#xff0c;在一次执行过后即释放。适合做初始化工作。 //立即执行函数格式&#xff0c;此类函数执行完即销毁&#xff0c;除了这点&#xff0c;和其它函数一样 (function (){}()); W3C建议使用这种 (function (){})();//只有表达式才能被…

[css] 使用css实现对话气泡的效果

[css] 使用css实现对话气泡的效果 方法&#xff1a;使用圆角矩形作为对话的主体框&#xff0c;左侧或右侧增加附加三角形&#xff0c;三角形使用border样式设置来实现&#xff0c;相对定位和绝对定位结合使三角形附于圆角矩形左侧或右侧&#xff1b; html: <div class"…

iframe嵌套其它网站页面详解

iframe基本内涵 通常我们使用iframe直接直接在页面嵌套iframe标签指定src就可以了。 <iframe src"demo_iframe_sandbox.htm"></iframe> 但是&#xff0c;有追求的我们&#xff0c;并不是想要这么low的iframe. 我们来看看在iframe中还可以设置些什么属…

JavaScript 闭包

闭包概念&#xff1a; 当内部函数被保存到外部时&#xff0c;将会生成闭包。闭包会导致原有作用域链不释放&#xff0c;造成内存泄漏。 什么时候才会触发闭包呢&#xff1f; 当两个函数互相嵌套&#xff0c;把里面的函数被保存到了外部&#xff08;全局&#xff09;&#xff…

[css] 如何隐藏没有静音、自动播放的音视频?

[css] 如何隐藏没有静音、自动播放的音视频&#xff1f; 浏览器已禁止打开页面时自动播放&#xff0c;可以用iframe先播触发播放权限&#xff0c;然后再播放 做一个opacity:0 的假隐藏个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但…

PyAutoIt 安装(Windows 版)

转载于:https://www.cnblogs.com/Crixus3714/p/9592635.html

[css] 你有使用过css的writing-mode属性吗?说说它有哪些应用场景?

[css] 你有使用过css的writing-mode属性吗&#xff1f;说说它有哪些应用场景&#xff1f; 用于规定文字的书写方式 horizontal-tb 从左到右从上到下(水平书写) vertical-rl 从上到下从右到左 (垂直书写) vertiacl-lr 从上到下从左到右 sideways-rl&#xff1a;内容垂直方向从上…

文案资源

策划与营销类网站 全球顶尖创意分享平台 OPEN YOUR MIND 数英网-数字媒体及职业招聘网站 SocialBeta | 领先的社交媒体和数字营销内容与招聘平台 梅花网&#xff0d;营销者的信息中心 视觉素材类网站 花瓣网_发现、采集你喜欢的一切 昵图网_原创素材共享平台www.nipic.co…

scp命令:服务器间远程复制代码

scp是secure copy的简写&#xff0c;用于在Linux下进行远程拷贝文件的命令&#xff0c;和它类似的命令有cp&#xff0c;不过cp只是在本机进行拷贝不能跨服务器&#xff0c;而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时&#xff0c…

[css] 怎么使用css选择空链接?

[css] 怎么使用css选择空链接&#xff1f; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style type"text/css">a[href], a:not(href) {color: #ff3333;}<…

构造函数内部原理 包装类

构造函数内部原理 在函数体最前面隐式得加上this {}执行 this.xxx xxx;隐式的返回this 包装类 定义一个原始数字或字符串&#xff0c;在JS里面&#xff0c;其实有两种方法 var num 123; var str abcd;var num new number(123); var str new string(abcd); 但是这两…