popup.parentNode.insertBefore(overlay, popup);在上面你给的代码中,运行到这行是代码报错
时间: 2024-04-17 19:26:34 浏览: 150
非常抱歉,我之前的回答有误。`popup`元素在创建时还没有被插入到DOM中,因此无法通过`popup.parentNode`访问其父节点。
为了解决这个问题,您可以将遮罩层元素直接添加到`document.body`中,然后在`popup`元素之后插入遮罩层。请参考以下修改后的代码:
```javascript
function showPopup(src) {
if (isPopupVisible) {
return; // 如果悬浮窗已经显示,则直接返回
}
isPopupVisible = 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";
// ...
document.body.appendChild(popup);
// ...
}
```
请将上述修改应用到您的代码中,并重新测试是否能够点击放大图片。如果还有其他问题,请随时提问。非常抱歉给您带来的困扰。
阅读全文