代码如下:<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script language="javascript" type="text/javascript">        var count = 0;
        var intervalKey;
        function countNumber() {            count++;
            var spObj = document.getElementById("spShow");
            spObj.innerText = count.toString();
        }
        
        function runCountNumber() {            countNumber();
            intervalKey = window.setInterval("countNumber()",1000);        }        function stopInterval() {            var spObj = document.getElementById("spShow");
            spObj.innerText = "可以注册了!";
            window.clearInterval(intervalKey);
            var btnSender = document.getElementById("btnRun");
            btnSender.disabled = false;
            
        }
        
        function allowRegister() {            
            window.setTimeout("stopInterval()", 9000);
            
        }        function runMethods() {            runCountNumber();
            allowRegister();
        }        
    </script>
</head><body onload="runMethods();">
    <form id="form1" runat="server">
        <span id="spShow" style="color:Red"></span>
        <input type="button" id="btnRun" disabled="disabled" value="注册" />
    </form>
</body>
</html>
为什么我做的这个,读秒页面显示10的时候,按钮可以点击了,但 显示的是10 而不是可以注册了,
var spObj = document.getElementById("spShow");
            spObj.innerText = "可以注册了!";
这个赋值语句没起作用 ,求教~

解决方案 »

  1.   

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script language="javascript" type="text/javascript">        var count = 0;
            var intervalKey;
            function countNumber() {            count++;
                var spObj = document.getElementById("spShow");
                spObj.innerText = count.toString();
                if(count == 10) {
                 stopInterval();
                }
            }
            
            function runCountNumber() {            countNumber();
                intervalKey = window.setInterval("countNumber()",1000);        }        function stopInterval() {            var spObj = document.getElementById("spShow");
                spObj.innerText = "可以注册了!";
                window.clearInterval(intervalKey);
                var btnSender = document.getElementById("btnRun");
                btnSender.disabled = false;
                
            }        function runMethods() {            runCountNumber();
            }        
        </script>
    </head><body onload="runMethods();">
        <form id="form1" runat="server">
            <span id="spShow" style="color:Red"></span>
            <input type="button" id="btnRun" disabled="disabled" value="注册" />
        </form>
    </body>
    </html>问题出在多线程冲突,当第二个线程执行clear的时候,正好第一个线程已经进入函数。所以clear了之后,还会再执行一次