如何使一个div可见并隐藏在一个函数中

时间:2013-06-18 09:06:14

标签: javascript html

我写过这个剧本。据我说,这个图像应该在警报阻止之后消失,但它没有发生。

<html>
    <head>
    </head>
    <body>
        <div id='idDivread' 
            style="position:absolute;
                   z-index:100;
                   width:expression(document.body.offsetWidth +'px');
                   height:expression(document.body.offsetHeight + 'px');
                   left:0px;
                   top:0px;
                   display:'none';
                   text-align:center;
                   background-color:#EEF4FD;filter:alpha(opacity=70).">

            <img src='images/Read.gif' 
                style="position:absolute;
                       top:expression(document.body.offsetHeight/2 -36 +'px')">
        </div>
        <div>
            <input type="button" value="click me" onclick ="change();"> 
        </div>
        <p id="example"></p>
    </body>
<script type ="text/javascript">
    function change()
    {
        idDivread.style.display='';
        setTimeout(function(){
            alert("Hello")
        },3000);
        idDivread.style.display='none';
    }
</script>

有任何帮助吗?感谢。

2 个答案:

答案 0 :(得分:1)

脚本不会停止并等待setTimeout执行。您需要将图像的隐藏与setTimeout一起放入alert回调函数中:

此外,您不能[*]仅通过其ID来访问元素。您需要使用getElementById来获取参考:

var idDivread = document.getElementById('idDivread');
idDivread.style.display='';
setTimeout(function(){
  alert("Hello");
  idDivread.style.display='none';
},3000);

[*]嗯,你可以,但你不应该,因为你依赖于旧的非标准浏览器功能。

编辑:您迫切应该确保使用DOCTYPE,因为目前您依赖Quirks mode,这是一件非常糟糕的事情。 expression仅限(旧)IE并且已弃用。它们不再适用于当前的IE(9和10),也不适用于任何其他浏览器。

答案 1 :(得分:-1)

试试这个

document.getElementById('idDivread').style.display='block';
setTimeout(function(){
    alert("Hello");
    document.getElementById('idDivread').style.display='none';
},3000);