Javascript setTimeout未显示文本

Javascript setTimeout未显示文本,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,所以我尝试做一个弹出窗口,它的工作原理如下: 3秒钟后,它将显示关闭按钮,但当您等待3秒钟时,将出现倒计时。 我的问题是没有显示文本 var n=3; 函数popup(){ setTimeout(函数(){ getElementById('bro').style.visibility=可见; }, 3000); 而(n>0){ setTimeout(函数(){ n--; }, 1000); n、 toString() getElementById('texto')。innerHTML=n; }

所以我尝试做一个弹出窗口,它的工作原理如下: 3秒钟后,它将显示关闭按钮,但当您等待3秒钟时,将出现倒计时。 我的问题是没有显示文本

var n=3;
函数popup(){
setTimeout(函数(){
getElementById('bro').style.visibility=可见;
}, 3000);
而(n>0){
setTimeout(函数(){
n--;
}, 1000);
n、 toString()
getElementById('texto')。innerHTML=n;
}
}
函数bro(){
getElementById('bro').style.display=“无”;
getElementById('texto').style.display=“无”;
getElementsByName('block').style.display=“无”;
}
#兄弟{
位置:绝对位置;
左:50px;
顶部:150px;
可见性:隐藏;
证明内容:中心;
z指数:3;
字体大小:20px;
}
#texto{
位置:绝对位置;
证明内容:中心;
过渡:无;
背景色:继承;
填充:继承;
z指数:1;
}
旁白{
位置:绝对位置;
证明内容:中心;
宽度:600px;
高度:500px;
背景颜色:蓝色;
边界半径:30px;
z指数:2;
}

3


您正在混合可见性和显示。超时功能将可见性设置为可见,但显示值仍设置为无。将所有显示“无”更改为可见性“隐藏”

我正在用手机打字,我无法使用工具轻松编写完整的代码,但请看您代码中的以下错误:

  • 您必须在代码中的任何
    getElementById
    之前添加
    文档。
  • 必须在“:
    document.getElementById('bro').style.visibility=“visible”
    之间换行
    visible
  • 什么是
    set
    (在
    set.setTimeout
    中)?将其从
    setTimeout()的前面删除
  • 什么是
    n.toString()
    ?。您必须分配它,不能直接使用它:
    .innerHTML=n.toString()
  • while
    放入
    setInterval()
  • 您已在
    弹出窗口
    功能中使用了
    可见性
    ,并在另一个位置使用了
    显示
    (用于更改
    bro
    的可见性)。在代码中使用其中一个(
    css
    js
    html
  • 使用
    document.querySelector('[name=“block”]').style.display=“none”用于隐藏
    元素。 8-将
    #texto
    z-index
    更改为3

  • 更新部分:

    现在,您可以在这里测试结果这是您的代码本身,它的问题已经解决:

    #兄弟{
    位置:绝对位置;
    左:50px;
    顶部:150px;
    可见性:隐藏;
    证明内容:中心;
    z指数:3;
    字体大小:20px;
    }
    #texto{
    位置:绝对位置;
    证明内容:中心;
    过渡:无;
    背景色:继承;
    填充:继承;
    z指数:3;
    字号:20pt;
    }
    旁白{
    位置:绝对位置;
    证明内容:中心;
    宽度:600px;
    高度:500px;
    背景颜色:蓝色;
    边界半径:30px;
    z指数:2;
    }
    
    

    3

    关 var n=3; 函数popup(){ setTimeout(函数(){ document.getElementById('bro').style.visibility=“visible”; }, 3000); var t2=设置间隔(函数(){ 调试器 如果(n-->=0)清除间隔(t2); else document.getElementById(“texto”).innerHTML=n+“”; }, 1000); } 函数bro(){ document.getElementById('bro').style.visibility=“hidden”; document.getElementById('texto').style.display=“无”; document.querySelector('[name=“block”]').style.display=“none”; }
    您的代码有几个问题

    • 属性集是什么
    • 几乎每次都会执行setTimeout
    • 您需要做的是使用整秒钟的setTimeout并检查当前循环,如果匹配
      n
      ,则显示关闭按钮
    我对您的代码进行了一些重构,大致如下:

    设n=3;
    设c=0;//柜台
    常量hideAll=()=>{
    隐藏(document.getElementById('texto');
    隐藏(document.getElementById('bro'));
    隐藏(document.getElementById('block');
    }
    constshow=(el)=>el.classList.remove('hidden');
    常量hide=(el)=>el.classList.add('hidden');
    常量showPopup=()=>{
    显示(document.getElementById('block');
    开始计算();
    }
    const startCountingDown=()=>setTimeout(倒计时,1000);
    常量倒计时=()=>{
    如果(c
    
    .hidden{display:none;}
    #兄弟{
    位置:绝对位置;
    左:50px;
    顶部:150px;
    /*可见性:隐藏*/
    证明内容:中心;
    z指数:3;
    字体大小:20px;
    }
    #texto{
    位置:绝对位置;
    证明内容:中心;
    过渡:无;
    背景色:继承;
    填充:继承;
    z指数:3;
    颜色:红色;
    字体大小:50px;
    左边距:40px;
    边缘顶部:25px;
    }
    旁白{
    位置:绝对位置;
    证明内容:中心;
    宽度:100px;
    高度:100px;
    背景颜色:蓝色;
    边界半径:30px;
    z指数:2;
    }

    1


    我认为您需要document.getElementById,而不仅仅是getElementById,因此具有与元素同名的全局函数将导致问题。什么是
    设置
    ?除非它是对
    窗口
    对象的引用(这本身会很奇怪),否则
    setTimeout()
    调用将导致语法错误。您希望超时内的n--in会更改在超时外调用它的文本???是的