// 添加键盘事件 document.onkeydown = function (e) { // 检查是否显示悬浮窗 if (isPopupVisible) { // 获取所有具有相同类名的图片元素 var imgs = document.querySelectorAll('.preview-image'); var currentIndex = Array.from(imgs).indexOf(img); // 获取当前图片在数组中的索引 switch (e.keyCode) { case 37: // 左箭头键 currentIndex = (currentIndex - 1 + imgs.length) % imgs.length; break; case 39: // 右箭头键 currentIndex = (currentIndex + 1) % imgs.length; break; } // 更新图片源 img.src = imgs[currentIndex].src; // 禁用页面滚动条 document.body.style.overflow = "hidden"; } }方向键能够切换图片,但是只能切换一次,不能来回切换
时间: 2024-04-17 21:27:00 浏览: 59
根据您提供的代码,方向键能够切换图片,但是只能切换一次的原因是,每次按下方向键后,`currentIndex`的值会更新,但是在后续的按键事件中没有更新`img`元素的值。因此,虽然`currentIndex`的值变化了,但是`img`元素的`src`属性并没有更新。
为了解决这个问题,您需要将更新`img`元素的`src`属性的代码放到按键事件处理程序内部。这样,在每次按下方向键后都会根据新的`currentIndex`值更新`img`元素的`src`属性。
请参考以下修改后的代码:
```javascript
// 添加键盘事件
document.onkeydown = function (e) {
// 检查是否显示悬浮窗
if (isPopupVisible) {
// 获取所有具有相同类名的图片元素
var imgs = document.querySelectorAll('.preview-image');
var currentIndex = Array.from(imgs).indexOf(img); // 获取当前图片在数组中的索引
switch (e.keyCode) {
case 37: // 左箭头键
currentIndex = (currentIndex - 1 + imgs.length) % imgs.length;
break;
case 39: // 右箭头键
currentIndex = (currentIndex + 1) % imgs.length;
break;
}
// 更新图片源
img.src = imgs[currentIndex].src;
// 禁用页面滚动条
document.body.style.overflow = "hidden";
}
};
```
这样,每次按下方向键后,`img`元素的`src`属性都会根据新的`currentIndex`值进行更新,从而实现了来回切换图片的功能。
希望这次能解决您的问题!如果问题仍然存在,请提供更多关于页面结构和其他相关代码的细节,以便更好地帮助您。
阅读全文