HTML5 混合APP开发学习笔记(七)——JavaScript HTML DOM操作

本文主要介绍了JavaScript HTML DOM操作,包括DOM的样式编程,如className属性、classList对象、style对象等,还阐述了HTMLCollection与NodeList的区别。同时详细讲解了事件相关内容,如常用事件、内联属性监听事件、DOM属性监听事件、标准的事件监听函数、事件触发过程及Event对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript HTML DOM操作

DOM的样式编程

  • className属性
    className属性可以用来读取或设置HTML元素对象的class属性
    当将className属性设置为空字符串时,代表移除所有的样式
  • classList对象
    所有浏览器的 childNodes 属性返回的是 NodeList 对象。
    大部分浏览器的 querySelectorAll() 返回 NodeList 对象。
    每个节点上都有一个classList对象,提供了方法新增、删除、修改节点上的样式类
    classList
  • style对象
    style对象包含了与每个CSS样式对应的属性,只是格式略有不同:
    对于单个单词的CSS样式,以相同的名字属性来表示(例如,color样式通过style.color表示)
    对于两个单词的CSS样式,则是通过去除横杠,将第一个单词加上首字母大写的第二个单词(例如:background-color样式对应style.backgroundColor
    可以方便获取HTML元素对象的style属性所定义的CSS样式值,但它无法获取在外部定义的CSS样式。
  • HTMLCollection 对象1
    getElementsByTagName() 方法返回 HTMLCollection 对象。
    HTMLCollection 对象类似包含 HTML 元素的一个数组。
    HTMLCollection 对象的 length 属性定义了集合中元素的数量。
    例:
var myCollection = document.getElementsByTagName("p");
document.getElementById("demo").innerHTML = myCollection.length;
  • HTMLCollection 与 NodeList 的区别
    HTMLCollection 是 HTML 元素的集合。
    只有 NodeList 对象有包含属性节点和文本节点。
    NodeList 是一个文档节点的集合。
    NodeList 与 HTMLCollection 都与数组对象有点类似,可以使用索引 (0, 1, 2, 3, 4, …) 来获取元素。
    NodeList 与 HTMLCollection 都有 length 属性。通常用作遍历操作
    HTMLCollection 元素可以通过 name,id 或索引来获取。
    相同点,与数组的区别
    均看起来可能是一个数组,但其实不是。
    你可以像数组一样,使用索引来获取元素。
    均无法使用数组的方法: valueOf(), pop(), push(), 或 join() 。

事件

JavaScript是基于对象(object-based)的语言,基于对象的基本特征,就是采用事件驱动(event drive)。事件是在浏览器中可以被 JavaScript 侦测到的行为,例如用户点击了按钮,移动了手指,都会触发相应的事件

常用事件

  • 鼠标:onmousedown、onmousemove、onmouseup、onclick、ondbclick等
  • 键盘:onkeydown、onkeyup、onkeypress等
  • 触摸:ontouchmove、ontouchend、ontouchstart、ontouchend等
  • 其他一些事件:onfocus、onblur、onresize、onload、onunload等

内联属性监听事件

  • 先定义好函数 <input type=“button” value=“运行JS函数” οnclick="eventTest();"/>
  • 也可以οnclick=“alert(‘hello’)”;

DOM属性监听事件

只能添加一个事件,后添加的会把之前的覆盖掉,只保留最后一个事件

var  	oInput1=document.getElementById("mybutton1");
  		oInput1.onclick=function(){
		nnalert("hello world");
			}

标准的事件监听函数

  • 若为true表示事件监听是在“捕获”阶段中监听,false表示在“冒泡”阶段中监听,该参数为可选项
    可以形成一个事件队列,依次执行
element.addEventListener("mouseover", myFunction,true);
element.addEventListener("click", mySecondFunction,false);
element.addEventListener("mouseout", myThirdFunction);
  • removeEventListener() 方法
    removeEventListener() 方法移除由 addEventListener() 方法添加的事件句柄:
    element.removeEventListener(“mousemove”, myFunction);

注意:这里的事件为 click 而非 onclick,注意 标准的事件监听函数DOM属性监听事件 的区别

事件触发过程

事件触发过程
事件传递定义了元素事件触发的顺序。 如果你将 <p> 元素插入到 <div> 元素中,用户点击 <p> 元素, 哪个元素的 “click” 事件先被触发呢?

  • 冒泡
    内部元素的事件会先被触发,然后再触发外部元素,即:<p> 元素的点击事件先触发,然后会触发<div> 元素的点击事件。
  • 捕获
    外部元素的事件会先被触发,然后才会触发内部元素的事件,即: <div> 元素的点击事件先触发 ,然后再触发 <p> 元素的点击事件。

事件的Event对象

当一个事件被触发的时候,会创建一个事件对象(Event Object),这个对象里面包含了一些有用的属性或者方法。事件对象会作为第一个参数,传递给我们的回调函数。事件对象包含了很多有用的信息,比如事件触发时,鼠标在屏幕上的坐标、被触发的 DOM 详细信息等


  1. https://www.runoob.com/js/js-htmldom-collections.html ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值