- Objective: - Breadcrumb: Notifications API - Notification - 事件 # 概念阐释 ## 语义 Event Handler 事件处理程序,是指在网页中来响应特定时间的 JavaScript 函数。 当用户与网页交互时(比如点击按钮、提交表单、鼠标移动等),这些交互会触发相应的事件。Event Handler就是用来捕获这些事件,并执行相应的操作或功能的JavaScript函数。 ## 语法 ```js element.onevent = function(event) { ... }; ``` - `notification` 被访问的HTML标签会被赋值的变量名 触发事件的一种调用方式,所有的事件前加`on`。比event attribute(在html中使用`<button ==onclick==="bgChange()">按下我</button>`)要简洁,但比[[js Events 事件监听添加 addEventListener]]要复杂。 # 实例 ## 匿名onclick函数写法 ```js // 访问页面中的第一个button标签 let element = document.querySelector('button'); //触发click事件并在点击后改变button按钮的颜色 element.onclick = function(){ element.style.backgroudColor = 'blue' }; //或者 element.onclick = () => { element.style.backgroudColor = 'blue' }; ``` ## 非匿名函数的写法 ```js //访问页面中的第一个button标签 let element = document.querySelector('button'); //创建turnBlue函数,包括一个将button标签改为蓝色的任务 function turnBlue() { element.style.backgroundColor = 'blue'; }; //触发click事件后执行turnBlue代码 element.onclick = turnBlue; ``` # 相关内容 - `ondbclick` 双击触发事件 - `onscroll` 滚动触发事件 - `onchange` 当输入区发生变化时触发显示结果,但只在输入结束后显示 ```html <input type="date"> <p> New Date </p> <p id="log"></p> ``` ```js const input = document.querySelector('input'); const log = document.getElementById('log'); function updateValue() { log.innerHTML = input.value; } log.onchange = updateValue; //当用户输入完日期后, ID为log的p标签内才会显示输入结果 ``` - `oninput`当输入区发生变化时,实时显示变化的结果,例如数字一直在增加,显示结果就一直增加 **以上事件也可用在事件监听写法中** # 问题 - [练习题](https://www.codecademy.com/courses/build-interactive-websites/lessons/javascript-dom/exercises/onclick-element) 当用户点击button按钮后,button按钮的背景为红色,字体颜色为白色,内容变为“red button”。 # 问题答案 ```js // 访问button按钮 let element = document.querySelector('button'); //匿名函数修改 element.onclick = function(){ element.style.backgroundColor = 'red'; element.style.color = 'white'; element.innerHTML = 'red button'; }; //非匿名函数 function turnBlueRed () {event}; element.onclick = turnBlueRed; ``` # 参考资料 - [onclick-MDN](https://developer.mozilla.org/zh-CN/docs/Web/API/Notification/click_event)