【JS】04 DOM 文档对象模型 P1 查找元素、改变内容、绑定事件
什么是DOM? Document Object Model
文档指的是HTML文档
当浏览器打开一个网页的时候,实际上把HTML文档读取到内存中进行解析
整个HTML文档被封装为document文档对象,其里面各个标签被解析成文档对象的各个元素
这些元素和文档对象形成了一种树形结构,又被称为是DOM树
基于这样的对象结构,我们可以使用JS来操作DOM
JavaScript 能够改变页面中的所有 HTML 元素
JavaScript 能够改变页面中的所有 HTML 属性
JavaScript 能够改变页面中的所有 CSS 样式
JavaScript 能够对页面中的所有事件做出反应
查找 HTML 元素
JS可以像CSS一样根据选择器来获取HTML元素
基础的三种:
- 标签选择
- 类选择
- 属性选择
let elementById = document.getElementById("id属性的值");
// 类属性可以被多个html元素使用,所以返回的是一个数组
let elementsByClassName = document.getElementsByClassName("class属性的值");
// 按照html元素的名称查询,因为具备多个同名的元素,所以返回一个元素的数组
let elementsByTagName = document.getElementsByTagName("标签的名称");
改变HTML内容
document.write() 可用于直接向 HTML 输出流写内容。
document.write(Date());
【绝对不要在文档(DOM)加载完成之后使用 document.write()。这会覆盖该文档】
修改 HTML 内容的最简单的方法是使用 innerHTML 属性。
如需改变 HTML 元素的内容,请使用这个语法:
document.getElementById(id).innerHTML=新的 HTML
修改html元素的内容
<p id="p1">Hello World!</p> <script>
document.getElementById("p1").innerHTML="新文本!";
</script>
改变 HTML 元素的属性,请使用这个语法:
document.getElementById(id).attribute=新属性值
改变 HTML 元素的样式,请使用这个语法:
document.getElementById(id).style.property=新样式
改变文本样式:
<p id="p1">Hello World!</p>
<p id="p2">Hello World!</p>
<script>
document.getElementById("p2").style.color="blue";
document.getElementById("p2").style.fontFamily="Arial";
document.getElementById("p2").style.fontSize="larger";
</script>
<p>以上段落通过脚本修改。</p>
或者通过事件的触发来修改
<h1 id="id1">我的标题 1</h1>
<button type="button"
onclick="document.getElementById('id1').style.color='red'">
点我!</button>
DOM事件
DOM对象可以让JavaScript 有能力对 HTML 得事件做出反应。
在事件发生时执行 JavaScript,比如当用户在 HTML 元素上点击时。
如需在用户点击某个元素时执行代码,请向一个 HTML 事件属性添加 JavaScript 代码:
事件类型 = 要执行的JS代码
onclick=JavaScript
点击这个H1标签会变更这个标签的内容
<h1 onclick="this.innerHTML='Ooops!'">点击文本!</h1>
或者是用JS脚本声明函数对象来绑定使用
<script>
function changetext(id)
{
id.innerHTML="Ooops!";
}
</script>
<h1 onclick="changetext(this)">点击文本!</h1>
DOM 允许使用 JavaScript 来向 HTML 元素分配事件:
<script>
document.getElementById("myBtn").onclick=function(){displayDate()};
</script>
主要事件的描述:
onload:用户进入页面时触发
可用于检测访问者的浏览器类型和浏览器版本,
并基于这些信息来加载网页的正确版本。
onunload:用户离开页面时触发
上述两者皆可以处理可用于处理 cookie。
onmouseover:鼠标移入元素区时域触发
onmouseout:鼠标移出元素区域时触发
onmousedown:鼠标按下时触发
onmouseup:鼠标松开时触发
onclick:鼠标左键点击时触发[就相当于上面2个事件的结合]
事件监听器 eventListener
样例:
document.getElementById("myBtn").addEventListener("click", displayDate);
addEventListener() 方法:
- 用于向指定元素添加事件句柄。
- 添加的事件句柄不会覆盖已存在的事件句柄
- 向一个元素添加多个事件句柄
- 向同个元素添加多个同类型的事件句柄,如:两个 "click" 事件。
- 向任何 DOM 对象添加事件监听,不仅仅是 HTML 元素。如: window 对象。
- 可以更简单的控制事件(冒泡与捕获)。
- JavaScript 从 HTML 标记中分离开来,可读性更强, 在没有控制HTML标记时也可以添加事件监听。
你可以使用 removeEventListener() 方法来移除事件的监听。
语法Syntax
element.addEventListener(event, function, useCapture);
第一个参数是事件的类型 (如 "click" 或 "mousedown").
第二个参数是事件触发后调用的函数。
第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。
演示案例:
当用户点击元素时弹出 "Hello World!" :
element.addEventListener("click", function(){ alert("Hello World!"); });
把函数单独挪出来写
element.addEventListener("click", myFunction);
function myFunction() {
alert ("Hello World!");
}
允许多个函数触发
element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);
允许不同事件类型,且多个
element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);
还可以通过事件来传递参数
element.addEventListener("click", function(){ myFunction(p1, p2); });
事件传递有两种方式:冒泡与捕获。
事件传递定义了元素事件触发的顺序。 如果你将 <p> 元素插入到 <div> 元素中,用户点击 <p> 元素, 哪个元素的 "click" 事件先被触发呢?
在 冒泡 中,内部元素的事件会先被触发,然后再触发外部元素,即: <p> 元素的点击事件先触发,然后会触发 <div> 元素的点击事件。
在 捕获 中,外部元素的事件会先被触发,然后才会触发内部元素的事件,即: <div> 元素的点击事件先触发 ,然后再触发 <p> 元素的点击事件。
addEventListener() 方法可以指定 "useCapture" 参数来设置传递类型:
默认值为 false, 即冒泡传递,当值为 true 时, 事件使用捕获传递。
案例
document.getElementById("myDiv").addEventListener("click", myFunction, true);
移除事件:
移除由 addEventListener() 方法添加的事件句柄:
element.removeEventListener("mousemove", myFunction);
【JS】04 DOM 文档对象模型 P1 查找元素、改变内容、绑定事件的更多相关文章
- js/jq 动态添加的元素不能触发绑定事件解决方案
<!-- Copyright 2017-10-27, Jachin QQ: 381558301 Email: 381558301@qq.com 请看看你们的版本并对号入座: jquery1.6版 ...
- js与DOM初步:访问html元素
1.DOM简介 DOM= Document Object Model,文档对象模型,DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构.换句话说,这是表示和处理一个HTML或XML文 ...
- html--JavaScript之DOM (文档对象模型)
一.简介 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 定义了用于 HTML 的一系列标准的对象,以及访问和处理 HTML 文档的标 ...
- JavaScript(三、DOM文档对象模型)
一.什么是DOM DOM 是 Document Object Model(文档对象模型)的缩写. DOM 是 W3C(万维网联盟)的标准. DOM 定义了访问 HTML 和 XML 文档的标准: &q ...
- DOM文档对象模型简介
DOM简介 DOM是W3C(万维网联盟)的标准 "W3C文档对象模型DOM是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容.结构.样式".W3C DOM ...
- javascript之DOM文档对象模型编程的引入
/* DOM(Document Object Model) 文档对象模型 一个html页面被浏览器加载的时候,浏览器就会对整个html页面上的所有标签都会创建一个对应的 对象进行描述,我们在浏览器上看 ...
- js,jq新增元素 ,on绑定事件无效
在jquery1.7之后,建议使用on来绑定事件. $('.upload a').on('click',function(){ $(this).remove(); }) 在DOM渲染的时候,也就是ht ...
- jquery appaend元素中id绑定事件失效问题
1. 在jquery中append元素,如果该元素中有id值并且绑定事件,那么该id事件会失效,必须刷新一下才能使用. 2.解决办法: 举例:如果在一个<div class="titl ...
- dom文档对象模型图
- 文档对象模型 DOM
1 DOM概述 1.1 什么是DOM 文档对象模型 Document Object Model 文档对象模型 是表示和操作 HTML和XML文档内容的基础API 文档对象模型,是W3C组织推荐的处理可 ...
随机推荐
- python中datetime的常用操作
datetime是用于处理日期和时间的模块,一些常用的操作可通过提供的基本函数实现.引入模块--import datetime. 1.datetime转字符串--strftime()函数 有两种写法: ...
- 算法金 | 只需十四步:从零开始掌握Python机器学习(附资源)
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 1. 引言 1.1 教程目的与读者定位 "启程"往往是最具挑战性的 ...
- CF1777E
problem & blog 反转的边最大权值最小,想到二分. 于是二分代价即可. 反转代价小于二分的代价的边可以反转,所以再建一条反向边即可. 在 DAG 中,存在一个点可以到达所有的点的条 ...
- Steam Epic 启动程序默认地址
Steam Epic 启动程(启动器)序默认地址 "D:\Games\EpicAPP\Epic Games\Launcher\Portal\Binaries\Win32\EpicGamesL ...
- 前端React的事件机制
前端React技术框架的事件机制不同于常见的事件机制--原生事件,此文将介绍React的事件机制是什么,与原生事件的区别,以及这两种事件机制是否可以混用等.希望您在阅读这篇文章之后,能够对React的 ...
- linux命令查看内存命令free -h whereis locate find查找命令
linux命令查看内存命令free -h whereis locate find查找命令 1.free -h root@hz-auto-eureka-test-03:/usr/local/tomca ...
- ElasticSearch服务Java内存异常分析和排查解决
ElasticSearch服务Java内存异常分析和排查解决 1.ElasticSearch业务微服务日志排查java.lang.IllegalStateException: Request cann ...
- const 和 volatile 指针
关键字 const 和 volatile 规定了指针的处理方式: const 规定指针在初始化后是受保护的,不能够再修改. volatile 规定了变量的值能够被用户应用程序外部的操作所修改. 因此, ...
- Canvas绘制圆角图片
效果图: 思路: 先绘制一个圆角长方形 在画布中裁剪下来 在圆角长方形内绘制图片 图片四个角超出圆角长方形的区域被隐藏 具体代码: <!DOCTYPE html> <html lan ...
- vmware安装配置openwrt
前言 OpenWrt是一个轻量的嵌入式linux系统,功能十分强大. 现在将我在vmware上安装OpenWrt的过程简单记录下来,以备后续参考. 环境准备 vmware软件 已经安装好的一个vmwa ...