所以我尝试做一个弹出窗口,它应该像这样工作: 3秒钟后,它将显示关闭按钮,但是当您等待3秒钟时,将进行倒数计时。 我的问题是没有显示文字
var n = 3;
function popup() {
set.setTimeout(function() {
getElementById('bro').style.visibility = visible;
}, 3000);
while (n > 0) {
set.setTimeout(function() {
n--;
}, 1000);
n.toString()
getElementById('texto').innerHTML = n;
}
}
function bro() {
getElementById('bro').style.display = "none";
getElementById('texto').style.display = "none";
getElementsByName('block').style.display = "none";
}
#bro {
position: absolute;
left: 50px;
top: 150px;
visibility: hidden;
justify-content: center;
z-index: 3;
font-size: 20px;
}
#texto {
position: absolute;
justify-content: center;
transition: none;
background-color: inherit;
padding: inherit;
z-index: 1;
}
aside {
position: absolute;
justify-content: center;
width: 600px;
height: 500px;
background-color: blue;
border-radius: 30px;
z-index: 2;
}
<body onload="popup()">
<p id="texto" color="red">3</p>
<button id="bro" onclick="bro()">close</button>
<aside name="block"></aside>
</body>
答案 0 :(得分:0)
您正在混合可视性和显示。您的超时功能将可见性设置为可见,但显示值仍设置为无。将所有显示“无”更改为可见性“隐藏”。
答案 1 :(得分:0)
您的代码有几个问题。
set
是什么属性? n
,则显示关闭按钮。我已经对您的代码进行了一些重构,看起来应该大致像这样:
let n = 3;
let c = 0; // counter
const hideAll = () => {
hide(document.getElementById('texto'));
hide(document.getElementById('bro'));
hide(document.getElementById('block'));
}
const show = (el) => el.classList.remove('hidden');
const hide = (el) => el.classList.add('hidden');
const showPopup = () => {
show(document.getElementById('block'));
startCountingDown();
}
const startCountingDown = () => setTimeout( countdown, 1000 );
const countdown = () => {
if(c < n) {
c++;
let texto = document.getElementById('texto');
texto.innerHTML = c.toString();
show(texto);
startCountingDown();
} else {
show(document.getElementById('bro'));
}
}
showPopup();
.hidden { display: none; }
#bro {
position: absolute;
left: 50px;
top: 150px;
/*visibility: hidden;*/
justify-content: center;
z-index: 3;
font-size: 20px;
}
#texto {
position: absolute;
justify-content: center;
transition: none;
background-color: inherit;
padding: inherit;
z-index: 3;
color: red;
font-size: 50px;
margin-left: 40px;
margin-top: 25px;
}
aside {
position: absolute;
justify-content: center;
width: 100px;
height: 100px;
background-color: blue;
border-radius: 30px;
z-index: 2;
}
<p id="texto" class="hidden">1</p>
<button id="bro" onclick="hideAll()" class="hidden">close</button>
<aside name="block" id="block" class="hidden"></aside>
我已经更改了元素的大小,以适合此页面。 我还创建了一个.hidden类,您可以添加或删除该类以显示和隐藏您的元素。我相信这是您入门的好方法。
我希望对您有帮助
答案 2 :(得分:-1)
我正在用手机打字,但是我无法使用用于轻松编写完整代码的工具,但是请在您的代码中查看以下错误:
document.
之前添加getElementById
。visible
放在“”之间:document.getElementById('bro').style.visibility = "visible"
; set
(在set.setTimeout
中)?从setTimeout()
之前删除它。n.toString()
?您必须分配它,而不能直接使用它:.innerHTML=n.toString()
while
放入setInterval()
visibility
函数中使用了popup
,并在另一个地方使用了display
(以更改bro
的可见性)。在您的代码中使用其中之一(css
,js
和html
); document.querySelector('[name="block"]').style.display = "none";
隐藏block
元素。
8-将z-index
中的#texto
更改为3。更新的部分:
现在,您可以在此处测试结果。 这是您的代码本身,它的问题已解决:
#bro {
position: absolute;
left: 50px;
top: 150px;
visibility: hidden;
justify-content: center;
z-index: 3;
font-size: 20px;
}
#texto {
position: absolute;
justify-content: center;
transition: none;
background-color: inherit;
padding: inherit;
z-index: 3;
font-size: 20pt;
}
aside {
position: absolute;
justify-content: center;
width: 600px;
height: 500px;
background-color: blue;
border-radius: 30px;
z-index: 2;
}
<body onload='popup()'>
<p id="texto" color="red">3</p>
<button id="bro" onclick="bro()">close</button>
<aside name="block"></aside>
<script>
var n = 3;
function popup() {
setTimeout(function() {
document.getElementById('bro').style.visibility="visible";
}, 3000);
var t2=setInterval(function() {
debugger
if(n--==0) clearInterval(t2);
else document.getElementById("texto").innerHTML=n+"";
}, 1000);
}
function bro() {
document.getElementById('bro').style.visibility = "hidden";
document.getElementById('texto').style.display = "none";
document.querySelector('[name="block"]').style.display = "none";
}
</script>
</body>