介绍
JavaScript是一种多功能且功能强大的编程语言,允许开发人员创建交互式和动态的Web应用程序。在处理JavaScript中事件和用户互动时经常出现的两个重要概念是事件传播和膨胀。在本文中,我们将以真实的示例探索这些概念,并提供代码以显示其工作原理。
事件冒泡
事件冒泡是JavaScript中的一个基本概念,它是指在元素上发生事件时通过DOM(请求对象模型)传播事件的顺序。当事件发生在单元格元素中时,它不仅会触发该元素,而且会触发dom树的父元素。
示例1:点击事件冒泡
想象每个元素上的元素和事件听众列表。单击元素应将其颜色更改为红色,但您想查看事件中的增加如何影响行为。
<! DOCTYPE html>
<html>
<head>
<title>Example of event bubble</title>
<style>
.item {
padding: 10px;
border: 1px solid #ccc;
border: 5px;
}
</style>
</head>
<body>
<div class="item" id="item1">Item 1</div>
<div class="item" id="item2">Item 2</div>
<div class="item" id="item3">Item 3</div>
<script>
const element = document.querySelectorAll('.element');
item.forEach(item => {
item.addEventListener( 'click', () => {
item.style.backgroundColor = 'red';
});
});
</script>
</body>
</html>
在此示例中,如果单击“项目1”,它将闪烁红色。但是,由于发生增加,当您单击“项目1”时,这三个项目都会更改颜色。这是因为点击事件传播到主要元素。
节流
坐着是一种用于控制函数执行速度的技术。这可以确保以一定的最大频率调用该函数,而不管事件发射了多少次。
示例2:滚动节流
考虑一个场景,其中您有一个循环事件侦听器,该场景会执行耗时的操作,例如每次用户循环时都会提出API请求。没有提示,此过程可能会变得压倒性并影响性能。
<! DOCTYPE html>
<html>
<head>
<title>A strong example</title>
<style>
body {
height: 2000px;
}
</style>
</head>
<body>
<p>Scroll down to see the moves. </p>
<script>
must be inflated = false;
function ExpensiveOperation () function
console.log('Performing expensive operation...');
// Wait 2 seconds and simulate expensive operation
setTimeout (() => {
console.log('Operation completed.');
thrown = false;
}, 2000);
}
windows.addEventListener( 'scroll', () => {
if (!thrown) {
performExpensiveOperation ();
thrown = true;
}
});
</script>
</body>
</html>
在此示例中,当您向下滚动页面时,每2秒钟就编写“执行昂贵的操作”消息。这样可以防止昂贵的操作在快速周期中连续调用。
结果
JavaScript中的一个重要概念可以显着影响事件程序的行为和功能。了解如何通过DOM传播事件以及如何控制功能执行频率可以帮助您创建更有效的Web应用程序。这里提供的示例应为将这些概念纳入您的JavaScript项目提供坚实的基础。