HTML 事件是发生在 HTML 元素上的事情。
当在 HTML 页面中使用 JavaScript 时, JavaScript 可以触发这些事件。
HTML 事件
HTML 事件可以是浏览器行为,也可以是用户行为。
以下是 HTML 事件的实例:
HTML 页面完成加载
HTML input 字段改变时
HTML 按钮被点击
通常,当事件发生时,你可以做些事情。
在事件触发时 JavaScript 可以执行一些代码。
HTML 元素中可以添加事件属性,使用 JavaScript 代码来添加 HTML 元素。
单引号:
<some-HTML-element some-event='some JavaScript'>
双引号:
<some-HTML-element some-event="some JavaScript">
在以下实例中,按钮元素中添加了 onclick 属性 (并加上代码):
实例
<button onclick='getElementById("demo").innerHTML=Date()'>现在的时间是??</button>
以上实例中,JavaScript 代码将修改 id="demo" 元素的内容。
在下一个实例中,代码将修改自身元素的内容 (使用 this.innerHTML):
实例
<button onclick="this.innerHTML=Date()">现在的时间是?</button>
JavaScript代码通常是几行代码。比较常见的是通过事件属性来调用: |
实例
<button onclick="displayDate()">现在的时间是?</button>
常见的HTML事件
下面是一些常见的HTML事件的列表:
事件 | 描述 |
---|---|
onchange | HTML 元素改变 |
onclick | 用户点击 HTML 元素 |
onmouseover | 用户在一个HTML元素上移动鼠标 |
onmouseout | 用户从一个HTML元素上移开鼠标 |
onkeydown | 用户按下键盘按键 |
onload | 浏览器已完成页面的加载 |
更多事件列表: JavaScript 参考手册 - HTML DOM 事件。
JavaScript 可以做什么?
事件可以用于处理表单验证,用户输入,用户行为及浏览器动作:
页面加载时触发事件
页面关闭时触发事件
用户点击按钮执行动作
验证用户输入内容的合法性
等等 ...
可以使用多种方法来执行 JavaScript 事件代码:
HTML 事件属性可以直接执行 JavaScript 代码
HTML 事件属性可以调用 JavaScript 函数
你可以为 HTML 元素指定自己的事件处理程序
你可以阻止事件的发生。
等等 ...
在 HTML DOM 章节中你将会学到更多关于事件及事件处理程序的知识。 |
如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!
avaScript 的 Event Loop(事件循环)是 JavaScript 运行时环境(如浏览器和 Node.js)的核心机制之一,它使得 JavaScript 能够处理异步操作而不会阻塞程序的执行。了解 Event Loop 对于理解 JavaScript 的非阻塞行为和编写高效的异步代码至关重要。
首先,重要的是要理解 JavaScript 是一种单线程的语言。这意味着 JavaScript 在同一时间内只能执行一个任务。然而,JavaScript 需要能够处理各种异步操作(如 AJAX 请求、文件读取、用户交互等),这些操作可能会花费很长时间完成。为了解决这个问题,JavaScript 采用了 Event Loop 和 Callback Queues(回调队列)。
调用栈是 JavaScript 代码执行时的数据结构,用于存储函数调用和返回地址。每当一个函数被调用时,它就会被推入调用栈,并在函数执行完毕后从栈中弹出。如果调用栈满了(即达到了最大调用深度),则会发生栈溢出错误。
堆是用于存储对象、数组等引用类型的内存区域。与调用栈不同,堆是动态分配的,并且其大小不是固定的。
Web APIs 是浏览器提供的一组与浏览器功能交互的接口,如 DOM 操作、网络请求等。这些 API 通常是异步的,并且它们有自己的线程或进程来处理请求。
当异步操作完成时(如 AJAX 请求、setTimeout、Promise 解决等),相应的回调函数会被放入任务队列(或称为宏任务队列)或微任务队列中。任务队列中的任务在当前的执行栈清空后才会被执行,而微任务队列中的任务会在当前执行栈清空后、但下一个宏任务执行前立即执行。
Event Loop 的工作流程可以概括为以下几个步骤:
console.log('1');
setTimeout(() => {
console.log('setTimeout 宏任务队列');
}, 0);
new Promise((resolve) => {
console.log('Promise 立即执行');
resolve();
}).then(() => {
console.log('then 微任务队列');
});
console.log('2');
//输出顺序
1
Promise 立即执行
2
then 微任务队列
setTimeout 宏任务队列
解释:
console.log('1');
setTimeout(() => {
console.log('setTimeout 宏任务队列1');
new Promise((resolve) => {
console.log('Promise in setTimeout');
resolve();
}).then(() => {
console.log('then in setTimeout');
});
setTimeout(() => {
console.log('setTimeout 宏任务队列2');
}, 0);
}, 0);
new Promise((resolve) => {
console.log('Promise 立即执行1');
resolve();
}).then(() => {
console.log('then 微任务队列1');
new Promise((resolve) => {
console.log('Promise 立即执行2');
resolve();
}).then(() => {
console.log('then 微任务队列2');
});
});
console.log('2');
//输出顺序
1
Promise 立即执行1
2
then 微任务队列1
Promise 立即执行2
then 微任务队列2
setTimeout 宏任务队列1
Promise in setTimeout
then in setTimeout
setTimeout 宏任务队列2
解释:
const async1= async () => {
console.log('async1 1');
await async2();
console.log('async1 2');
}
const async2= async () => {
console.log('async2');
}
console.log('1');
setTimeout(() => {
console.log('setTimeout 宏任务队列');
}, 0);
async1();
new Promise((resolve) => {
console.log('promise 立即执行');
resolve();
}).then(() => {
console.log('then 微任务队列');
});
console.log('2');
//输出顺序
1
async1 1
async2
promise 立即执行
2
async1 2
then 微任务队列
setTimeout 宏任务队列
解释:
Event Loop 是 JavaScript 异步编程的基石,它使得 JavaScript 能够在不阻塞主线程的情况下处理各种异步操作。通过理解 Event Loop 的工作原理,我们可以更加高效地编写异步代码,避免潜在的错误和性能问题。
例
HTML 两个列表实例: 一个有序列表 (<ol>) 和 一个无序列表 (<ul>) :
<ol>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ol>
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
浏览器支持
目前多数主流浏览器支持 <li>标签。
标签定义及使用说明
<li> 标签定义列表项目。
<li> 标签可用在有序列表(<ol>)、无序列表(<ul>)和菜单列表(<menu>)中。
HTML 4.01 与 HTML5之间的差异
"type" 属性 在 HTML 4.01 已被废弃。HTML5 不支持该属性。
"value" 属性 在 HTML 4.01 已被废弃。HTML5 不支持该属性。
提示和注释
提示: 请使用 CSS 来定义列表和列表项目的类型。
属性
属性 | 值 | 描述 |
---|---|---|
type | 1AaIidiscsquarecircle | HTML5 不支持该属性。HTML 4.01 已废弃该属性。 不赞成使用。请使用样式取代它。 规定使用哪种项目符号。 |
value | number | 不赞成使用。请使用样式取代它。 规定列表项目的数字。 |
全局属性
<li> 标签支持全局属性,查看完整属性表 HTML 全局属性。
事件属性
<li> 标签支持所有 HTML 事件属性。
如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!
*请认真填写需求信息,我们会在24小时内与您取得联系。