JavaScript预习

一.JavaScript简介

1.1

方法一

 <!DOCTYPE html>
 <html>
 <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <script src="script.js"></script>
     <title>Document</title>
 </head>
 <body>
 </body>
 </html>

方法二

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
 </head>
 <body>
     <script></script>
 </body>
 </html>
1.2JavaScript输出
 console.log('Hello, World!')
1.3JavaScript注释
 // 单行注释
 /* 多行注释 */
1.4JavaScript弹窗
 alert('Hello, World!')

二.JavaScript内容
1.1获取元素

1.通过ID获取元素 ID: 元素的id属性,是唯一的。

 document.getElementById('id')

2.通过类名获取元素 class: 元素的class属性,可以有多个相同的类名。

 document.getElementsByClassName('class')

多个类名之间用空格隔开,返回的是一个数组。

3.通过标签名获取元素 tag: 元素的标签名,如div、p、a等。

 document.getElementsByTagName('tag')

4.通过选择器获取元素 selector: CSS选择器,如#id、.class、tag等。

 document.querySelector('selector')
 document.querySelectorAll('selector')

// 举例

 document.querySelector('#id')
 document.querySelectorAll('.class')
 document.querySelectorAll('tag')

区别:querySelector只返回第一个匹配的元素,querySelectorAll返回所有匹配的元素。

1.2事件

JavaScript 与 HTML 之间的交互是通过事件实现的。事件是文档或浏览器窗口中发生的一些特定的交互瞬间。可以使用事件监听器来预定事件,以便事件发生时执行相应的代码。

1.事件流 事件流 是从页面中接收事件的顺序。DOM事件流规范规定事件流分为 3 个阶段:

1.事件捕获阶段:事件从上往下查找对应元素,直到捕获到事件。

2.到达目标阶段:到达目标元素后执行事件对应的处理函数。

3.事件冒泡阶段:事件从目标元素开始冒泡

注意:在 DOM 事件流中,实际的目标(元素)在捕获阶段不会收到事件。这是因为捕获阶段从document到再到就结束了。下一阶段,即会在元素上触发事件的"到达目标"阶段,通常在事件处理时被认为是冒泡阶段的一部分。然后冒泡阶段开始,事件反向传播至文档。

1.2事件监听器

事件处理程序(或事件监听器)就是响应事件而调用的函数。

1.3DOM0事件监听器:

使用on开头的事件,同一个元素同一个事件只能设置一个处理函数,最后注册的处理函数将会覆盖前面注册的处理函数。

 //添加 
 <button οnclick="changeNumber" />
 或 btn.onclick = function(){}
 //删除 
 btn.onclick = null
1.4DOM1事件监听器:

使用addEventListener() 和 removeEventListener()

一、addEventListener()与removeEventListener()用于追加事件和删除追加。所有的DOM节点中都包含这两种方法,并且它们都接受3个参数:要处理的事件名、作为事件处理程序的函数和一个布尔值。 最后这个布尔值参数是true,表示在捕获阶段调用事件处理程序;如果是false,表示在冒泡阶段调用事件处理程序。默认为false;

1.要在按钮上为click事件添加事件处理程序,可以使用下列代码:

 var btn = document.getElementById("myBtn");
 btn.addEventListener("click", function () {
    alert(this.id);
 }, false);

2.使用DOM2级方法添加事件处理程序的主要好处是可以添加多个事件处理程序。来看下面的例子:

 var btn = document.getElementById("myBtn");
 btn.addEventListener("click", function () {
     alert(this.id);
 }, false);
 btn.addEventListener("click", function () {
     alert("Hello World");
 }, false);

3.通过addEventListener()添加的事件处理程序只能使用removeEventListener()来移除;移除时传入的参数与添加处理程序时使用的参数相同。这也意味着通过addEventListener()添加的匿名函数无法移除,在这个例子中,removeEventListener无法删除addEventListener所追加的事件,因为两个方法并不相等,内存地址已经是不同的,如下面的例子所示:

 var btn = document.getElementById("myBtn");
 btn.addEventListener("click", function () {
     alert(this.id);
 }, false);
 btn.removeEventListener("click", function () {  // 无效!
     alert(this.id);
 }, false);

4.addEventListener添加的监听事件和removeEventListener移除事件是同一个方法时,才可以移除有效,如下面的例子所示:

 var btn = document.getElementById("myBtn");
 var handler = function () {
         alert(this.id);
     };
 btn.addEventListener("click", handler, false);
 btn.removeEventListener("click", handler, false);  //有效!

二、关于对屏幕变化监听响应页面方法:

1.使用window.onresize(缺点:无法在页面离开时关闭监听):

 window.onresize = function () {
   console.log('屏幕监听到了')
 }

2.使用window.addEventListener(可以在页面离开时关闭监听):

 let sizeFun = function () {
  console.log('屏幕监听')
 }
 window.addEventListener('resize', sizeFun )
 window.removeEventListener('resize', sizeFun )
 ​
 ​

注意:onkeypress区分大小写,并且不识别功能键,比如左右箭头、shift、ctrl等。

事件对象event

DOM发生事件时会将相关信息收集并存储在event对象中。该对象会包含一些事件的元素、类型等基本信息。在浏览器中,event对象是传给事件监听器的唯一参数。在添加事件监听器时可以使用事件对象。

1.event.currentTarget是当前事件处理程序所在的元素;event.target是事件目标

2.event.target 和 this的区别:

  • this是事件绑定的元素,这个函数的调用者(绑定这个事件的元素)

  • event.target是事件触发的元素,即点的是哪个元素。在表单中常常使event.target.value 来获取绑定事件的表单项。在JS中常常使用 event.target.style.xxx来动态为HTML元素绑定CSS样式。

事件委托

事件委托是指将事件绑定到父元素上,通过事件对象的target属性判断事件源,从而执行对应的事件处理函数。

 element.addEventListener('event', function(event) {
     if (event.target.tagName === 'tag') {
         // 事件处理函数
     }
 })

  • 事件委托的优点:减少事件绑定,提高性能。

  • 事件委托的原理:事件冒泡。

  • 事件委托的应用:动态添加元素。

事件绑定

事件绑定是指将事件处理函数绑定到元素上,当事件触发时执行对应的事件处理函数。

 element.addEventListener('event', function, useCapture)
  • 事件绑定的优点:解耦,提高代码的可维护性。

  • 事件绑定的原理:事件监听

事件解绑

事件解绑是指将事件处理函数从元素上解绑,当事件不再触发时不执行对应的事件处理函数。

 element.removeEventListener('event', function, useCapture)
  • 事件解绑的优点:减少内存占用,提高性能。

  • 事件解绑的原理:事件监听。

    事件触发

    事件触发是指手动触发元素上的事件,执行对应的事件处理函数。

 element.dispatchEvent(event)

  • 事件触发的应用:模拟用户操作。

  • 事件触发的原理:事件监听。

触发的类型:click、mouseover、mouseout、keydown、keyup等。

  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值