01_前端JS_DOM和事件

DOM

1.DOM概述:

1.DOM是文档对象模型的缩写,

D:文档—HTML文档或XML文档

O:对象—document对象的属性和方法

M:模型

2.HTML DOM

DOM是将HTML文档表达为数结构,定义了访问和操作HTML文档的标准方法,DOM树:节点(node)的层次,

节点分为: 文档节点,文本节点,元素节点,属性节点

2.获取元素

元素获取的方式
1.通过元素ID

getElementById,返回拥有指定id的第一个元素,如果不存在则返回null;

2.通过标签名字

getElementByTagName,返回一个包括所有给定标签名称的元素集合,如果没有元素就返回一个空集;

3.通过class名字获取

getElementByClassName,返回一个包含指定class名称的元素集合,并在任意元素调用该方法

元素节点的属性操作
  • 操作标准属性

​ 元素对象[“属性名”]
​ 元素对象.属性名
​ 元素对象.getAttribute(“属性名”)

  • 设置属性值
    元素对象[”属性名”] = 值
    元素对象.属性名 = 值
    元素对象.setAttribute(“属性名”, 值)
  • 操作自定义属性

    获取属性值:
    元素对象.getAttribute(“属性名”)

    设置属性值:
    元素对象.setAttribute(“属性名”, 值)

Node对象的属性和方法
常用的属性:
属性名描述
firstChild指向子节点列表中的第一个节点
lastChild指向子节点列表中的最后一个节点
childNodes所有子节点的列表
previousSibling执行前一个兄弟节点,如果这个节点就是第一个,那么值就是null
nextSibling执行后一个兄弟节点,如果这个节点是最后一个,那么值为null
parentNode父节点
常用的方法
方法名描述
hasChildNodes是否包含子节点
appendChild(node)将节点添加到子节点列表的末尾
removeChild(node)从子节点中删除node
replaceChild(newNode,oldNode)替换子节点
insertBefore(newNode,refNode)在一个子节点前插入一个新的子节点,在refNode前插入newBefore

2.事件处理

事件驱动编程的核心对象

1.事件源 : 事件主体(指元素和标签)

2.事件名称 : 发出什么样的通知

3.事件响应函数 : 当这个事件发生是,执行什么样的操作

4.事件对象 : 事件发生时,产生一个描述改事件的具体对象,包括具体的参数一起发给响应函数

事件类型:(常用)

鼠标事件及键盘事件及表单事件

事件的绑定方式

元素是不自带条件的,给元素添加功能的时候,需要先给对应元素绑定上对应的事件,然后触发事件,执行绑定好的函数

绑定事件的方式一
1.在元素上使用onXXX属性绑定

xxx事件名称/类型

<input type="butten" value="点我啊" onclick="alert("点我干啥")"/>

这种方式特别简单,缺点是HTML和JS代码交错在一起,不方便维护

2.通过元素对象的事件属性绑定
<!--在该元素被加载完的时候没有绑定事件-->
<input type="button" value="点我啊" id="btn"/>
//使用JS代码为元素绑定事件
var btn = document.getElementById("btn");
btn.onclick = function(){
    alert("点我干啥");
}

这种方式,使得 HTML 和 JS 完全分离开来,便于后期维护, 推荐使用.

注意: 使用这种方式为元素绑定事件, 一定是要在元素被加载后,然后再执行上面的JS代码, 这样才能绑定成功. 试想,一个人都还没出生, 你怎么能让他做事呢?

所以,绑定事件的 JS 代码编写的位置很重要,通常有两种方式

  1. 在元素后面编写js代码

    <input type="button" value="点我啊" id="btn"/>
    <script>
        //在input元素被加载后再根据id获取这个元素,可行
    	var btn = document.getElementById("btn");
    	btn.onclick = function(){
        	alert("点我干啥");
    	}
    </script>
    
  2. 使用文档加载事件, 在整个html文档加载完成之后再获取元素,绑定事件

    window.onload = function(){
        //这个函数中的代码会在整个文档加载完成之后再执行
        //此时获取元素,可行
    	var btn = document.getElementById("btn");
    	btn.onclick = function(){
        	alert("点我干啥");
    	}
    }
    
3.通过元素对象的方法绑定事件

非IE浏览器和IE9及以上: addEventListener
[Object].addEventListener(“name_of_event”, fnHandler);
name_of_event: 直接使用事件(操作)名称,没有on, 多次添加监听后,触发顺序: 先添加的先执行

​ fnHandler: 事件响应函数

​ [Object].removeEventListener(“name_of_event”, fnHandler);
​ fnHandler : 移除时,传入的"事件响应函数",必须和添加时,传入的是同一个(通过相同标识符引用的那一个函数)
​ 匿名函数,每次创建的都不同

window.onload = function(){
    var btn = document.getElementById("btn");
    // 绑定事件
    btn.addEventListener("click", function(){
        alert("点我干啥?");
    });
    btn.addEventListener("click", function(){
        alert("又来,想si啊!");
    });
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值