gpt4 book ai didi

函数内的javascript优先级

转载 作者:行者123 更新时间:2023-12-03 05:59:13 25 4
gpt4 key购买 nike

我试图先打开覆盖层,然后再打开警报框。即使我在覆盖框之后编写了警报框,它也是第一个出现的。所以我需要知道我的代码中存在什么问题

<!DOCTYPE html>
<html>
<style>
body {
margin: 0;
font-family: 'Lato', sans-serif;
}
.overlay {
height: 100%;
width: 0;
position: fixed;
z-index: 1;
top: 0;
left: 0;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0, 0.9);
overflow-x: hidden;
transition: 0.5s;
}
.overlay-content {
position: relative;
top: 25%;
width: 100%;
text-align: center;
margin-top: 30px;
}
.overlay a {
padding: 8px;
text-decoration: none;
font-size: 36px;
color: #818181;
display: block;
transition: 0.3s;
}
.overlay a:hover, .overlay a:focus {
color: #f1f1f1;
}
.overlay .closebtn {
position: absolute;
top: 20px;
right: 45px;
font-size: 60px;
}
@media screen and (max-height: 450px) {
.overlay a {font-size: 20px}
.overlay .closebtn {
font-size: 40px;
top: 15px;
right: 35px;
}
}
</style>
<body>

<div id="myNav" class="overlay">
<a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
<div class="overlay-content">
</div>
</div>

<h2>Fullscreen Overlay Nav Example</h2>
<p>Click on the element below to open the fullscreen overlay navigation menu.</p>
<p>In this example, the navigation menu will slide in, from left to right:</p>
<span style="font-size:30px;cursor:pointer" onclick="openNav()">&#9776; open</span>

<script>
function openNav() {
document.getElementById("myNav").style.width = "100%";
alert("hello");
}

function closeNav() {
document.getElementById("myNav").style.width = "0%";
}
</script>
</body>
</html>

最佳答案

你的 JavaScript 代码不会在你的

处等待
document.getElementById("myNav").style.width = "100%";

发生 css 转换时的行。它将立即开始执行接下来的任何 JavaScript 行。

如果您希望在转换后发生操作,您需要为 transitionend 添加事件监听器(或者 animationend 如果使用关键帧动画)。

因此,如果您希望在转换后发生警报,​​您需要将代码更改为类似的内容

var nav = document.getElementById("myNav");
nav.addEventListener("transitionend",function(){
//this callback is called when transition ends
alert("hello");
});
nav.style.width = "100%";

演示

var nav = document.getElementById("myNav");
var btn = document.querySelector("button");

function openNav() {

nav.addEventListener("transitionend", function() {
//this callback is called when transition ends
alert("hello");
});
nav.style.width = "100%";
}

btn.addEventListener("click", openNav);
#myNav {
display: block;
width: 0%;
height: 100px;
background: grey;
transition: width 1s;
}
<div id="myNav">
</div>

<button>Open</button>

关于函数内的javascript优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39813941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com