在JavaScript中,为div
元素绑定焦点事件,可以使用addEventListener
方法。由于div
默认不可聚焦,需要先通过设置tabindex
属性使其可聚焦。
以下是一个示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#myDiv {
width: 200px;
height: 100px;
background-color: lightblue;
display: flex;
align-items: center;
justify-content: center;
}
</style>
</head>
<body>
<div id="myDiv" tabindex="0">可聚焦的div</div>
<script>
const myDiv = document.getElementById('myDiv');
myDiv.addEventListener('focus', function () {
console.log('div获得焦点');
myDiv.style.backgroundColor = 'lightgreen';
});
myDiv.addEventListener('blur', function () {
console.log('div失去焦点');
myDiv.style.backgroundColor = 'lightblue';
});
</script>
</body>
</html>
一、基础概念
focus
事件:当元素获得焦点时触发。例如用户点击一个可聚焦元素或者使用Tab键导航到该元素时。blur
事件:当元素失去焦点时触发。0
表示按照文档流顺序参与Tab键导航;设置为负数(如- 1
)表示元素可以通过JavaScript等方式聚焦,但不参与Tab键导航顺序。二、优势
div
)。三、类型(这里主要是两种主要的焦点事件类型)
focus
事件,当元素获得焦点时触发基本的交互逻辑。focusin
事件在元素即将获得焦点时触发,并且会冒泡;focusout
事件在元素即将失去焦点时触发,也会冒泡。而focus
和blur
不会冒泡。四、应用场景
div
包裹的菜单内容)时,显示子菜单或者改变菜单的样式。div
结构)获得焦点时,可以阻止用户与其他页面内容交互,并且在失去焦点时进行相应的处理(如关闭对话框)。五、可能遇到的问题及解决方法
div
无法聚焦div
默认不可聚焦,如果没有设置tabindex
属性或者设置为不可聚焦的值(如tabindex = "-1"
且没有通过JavaScript聚焦)。tabindex = "0"
或者通过JavaScript调用focus()
方法并确保元素可聚焦(例如没有设置pointer - events: none
等阻止聚焦的样式)。tabindex
但仍然无法获得焦点(例如父元素设置了pointer - events: none
等影响子元素聚焦的样式)。window.onload
事件或者DOMContentLoaded
事件处理函数内部,确保元素已经存在于DOM中。领取专属 10元无门槛券
手把手带您无忧上云