如果没有储存所有图片URL的数组可以实现么
时间: 2024-04-17 07:26:56 浏览: 98
如果没有存储所有图片URL的数组,仍然可以实现切换同一行内的前一张或后一张图片的功能。您可以通过其他方式获取同一行内的图片,并在键盘事件中进行切换。
以下是一个示例代码,它假设同一行内的图片具有相同的类名,并且通过`querySelectorAll`方法获取所有具有该类名的图片元素:
```javascript
function showPopup(src) {
isPopupVisible = true; // 设置悬浮窗显示状态为true
var overlay = document.createElement("div");
overlay.style.position = "fixed";
overlay.style.top = "0";
overlay.style.left = "0";
overlay.style.width = "100%";
overlay.style.height = "100%";
overlay.style.backgroundColor = "rgba(0, 0, 0, 0.8)";
overlay.style.zIndex = "9998"; // 设置遮罩层的z-index低于悬浮窗,但高于其他元素
document.body.appendChild(overlay);
var popup = document.createElement("div");
popup.style.position = "fixed";
popup.style.top = "50%";
popup.style.left = "50%";
popup.style.transform = "translate(-50%, -50%)";
popup.style.backgroundColor = "rgba(0, 0, 0, 0.8)";
popup.style.zIndex = "9999";
popup.style.width = "75%"; // 设置悬浮窗宽度为页面宽度的75%
popup.style.height = "75%"; // 设置悬浮窗高度为页面高度的75%
popup.style.overflow = "hidden";
var imgContainer = document.createElement("div");
imgContainer.style.display = "flex";
imgContainer.style.justifyContent = "center";
imgContainer.style.alignItems = "center";
imgContainer.style.backgroundColor = "transparent";
imgContainer.style.width = "100%";
imgContainer.style.height = "100%";
var img = document.createElement("img");
img.src = src;
img.alt = "放大照片";
img.style.maxWidth = "100%";
img.style.maxHeight = "100%";
// 添加键盘事件
document.onkeydown = function (e) {
// 检查是否显示悬浮窗
if (isPopupVisible) {
// 获取所有具有相同类名的图片元素
var imgs = document.querySelectorAll('.same-class-name');
var currentIndex = Array.from(imgs).indexOf(img); // 获取当前图片在数组中的索引
switch (e.keyCode) {
case 37: // 左箭头键
currentIndex = (currentIndex - 1 + imgs.length) % imgs.length;
img.src = imgs[currentIndex].src;
break;
case 39: // 右箭头键
currentIndex = (currentIndex + 1) % imgs.length;
img.src = imgs[currentIndex].src;
break;
case 38: // 上箭头键
// 同行之前一张图片
// 实现逻辑代码
break;
case 40: // 下箭头键
// 同行之后一张图片
// 实现逻辑代码
break;
}
}
};
overlay.onclick = function () {
document.body.removeChild(popup);
document.body.removeChild(overlay);
isPopupVisible = false; // 设置悬浮窗显示状态为false
};
imgContainer.appendChild(img);
popup.appendChild(imgContainer);
document.body.appendChild(popup);
}
```
请注意,上述示例代码假设同一行内的图片具有相同的类名,并使用`querySelectorAll('.same-class-name')`方法获取所有具有该类名的图片元素。您需要将代码中的`.same-class-name`替换为您实际使用的类名。
希望这对您有帮助!如果还有其他问题,请随时提问。
阅读全文