问一段js代码的几个问题

<html>
<head>
<script type="text/javascript">
var c
function timedCount(x)
{
document.getElementById('txt').value=x
c=x-1
if(c==0)
{
document.getElementById('txt').value="结束"
}
else
{
setTimeout("timedCount(c)",1000)
}

}
function myprompt()
{ var c=prompt("请输入时间","")
if (c==null || c=="")
{
alert("请正确输入!")
}
else
{
timedCount(c);
}
}
</script>
</head>

<body>

<form>

<input type="button" value="开始计时!" id="txt" onClick="myprompt()">

</form>

</body>

</html>

问题1:为什么倒计时到1时不会显示1直接跳到“结束”
问题2:怎么修改代码,使输入一个或多个空格也会弹出alert

问题3:这段代码,我输入空格会从-1开始计时,然后再点一次按钮再输入一次空格会变成一秒内计时-1,-2;以此类推再输入一次空格,一秒内会计时从-1到-2到-3.我想应该是函数的效果被叠加了,但是为什么会是这种效果?这是一个怎样的叠加过程?

问题4写问题的时候发现切换标签回去时变正常了(-1跳到-3,不会出现-2)
然后又偶然发现这还要看输入的两次空格间的间隙,如果输完第一次空格后,马上再点击按钮输空格,会是问题3的情况,如果第二次输的晚就会是问题4的情况

好吧,只要回答问题1,2就可以了,问题3,4应该不是什么理论概念的问题

首先修改你逻辑上的bug

document.getElementById('txt').value = x;
c = x - 1;
if(c == 0){
    document.getElementById('txt').value="结束";
}

假如此时x为1,那么会在按钮上显示“1”,没问题,可是紧接着就把x减去1,判断是否为0。这两个步骤连得很紧,所以那个“1”你连看都没看到就变为“结束”了。

其次,输入验证的问题。可以对输入进行类型转换,如果转化结果为“NaN”则说明格式错误,不必纠结于错误的原因是否在于空格。

最后,用全局变量c计时,那么timedCount就不需要形参了,myprompt()函数中也不需要再用var去声明,这样反而给阅读者带来困扰。

好了,给你看我改写的代码,我很耐心吧?

<html>
<head>
    <script type="text/javascript">
        var c;
        function timedCount() {
            if(c == 0) {
                document.getElementById('txt').value = "结束";
            } else {
                document.getElementById('txt').value = c--;
                setTimeout("timedCount()", 1000);
            }
        }
        function myprompt() {
            c = parseInt(prompt("请输入时间", "").replace(" ", ""));
            if(isNaN(c)) {
                alert("请正确输入!");
            }
            else {
                timedCount();
            }
        }
    </script>
</head>
<body>
    <form>
        <input type="button" value="开始计时!" id="txt" onClick="myprompt()">
    </form>
</body>
</html>

追问

谢谢,很耐心
此题是根据这道题改的:http://www.w3school.com.cn/tiy/t.asp?f=jseg_timing_infinite
prompt那段因为是粘贴过来改了一下所以没注意到声明的问题。(看一下评论)

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网