If-Statement将不会运行并否定以前的代码

时间:2017-09-24 15:28:51

标签: javascript

我之前从未使用过本网站,而且我是编程新手,所以请耐心等待。我的作业要求我提示用户输入1到12之间的数字,再次询问他们是否不这样做,并根据输入的数字更改背景颜色。在6变为红色时,6为白色,6以上为蓝色。

出于某种原因,如果我注释掉if / if-else / else块,则在此之前提示。如果我取消注释它,网页上什么都没发生,我不知道为什么。有人能告诉我我做错了吗?

<script>

        var userNum = window.prompt("Please insert a number between 1 and 12...", "1 - 12");

        if((userNum <= 12) && (userNum >= 1))
        {
            document.write
            (
                userNum + " * 1 = " + userNum * 1;
                userNum + " * 2 = " + userNum * 2;
                userNum + " * 3 = " + userNum * 3;
                userNum + " * 4 = " + userNum * 4;
                userNum + " * 5 = " + userNum * 5;
                userNum + " * 6 = " + userNum * 6;
                userNum + " * 7 = " + userNum * 7;
                userNum + " * 8 = " + userNum * 8;
                userNum + " * 9 = " + userNum * 9;
                userNum + " * 10 = " + userNum * 10;
                userNum + " * 11 = " + userNum * 11;
                userNum + " * 12 = " + userNum * 12;
            )

            if(userNum < 6)
            {
                window.bgColor = "red";
            }
            else if(userNum > 6)
            {
                window.bgColor = "blue";
            }
            else
            {
                window.bgColor = "white";
            }
        }
        else if((userNum > 12) || (userNum < 1))
        {
            window.alert("Error: Input value outside requested range");
            window.reload();
        }
        else
        {
            window.alert("Error: Input value not a number");
            window.reload();
        }

</script>

1 个答案:

答案 0 :(得分:1)

  

如果我取消注释,网页上根本没有任何反应,我不知道为什么。

使用浏览器内置的调试工具。例如,如果您使用的是Chrome,请阅读其开发工具here。搜索插入浏览器名称的“XYZ dev工具”将查找有关浏览器开发工具的信息。

其中一个关键是控制台,您可以在大多数操作系统上通过Ctrl + Shift + I或F12以及在Mac OS上通过Cmd + Shift + I访问。在控制台中,您会在;调用中的第一个document.write上看到语法错误,因为您不能在表达式中间放置;。您可能还想分隔您输出的行,因此最小更改版本可能是:

var userNum = window.prompt("Please insert a number between 1 and 12...", "1 - 12");

if((userNum <= 12) && (userNum >= 1))
{
    document.write
    (
        userNum + " * 1 = " + userNum * 1 + "<br>" +
        userNum + " * 2 = " + userNum * 2 + "<br>" +
        userNum + " * 3 = " + userNum * 3 + "<br>" +
        userNum + " * 4 = " + userNum * 4 + "<br>" +
        userNum + " * 5 = " + userNum * 5 + "<br>" +
        userNum + " * 6 = " + userNum * 6 + "<br>" +
        userNum + " * 7 = " + userNum * 7 + "<br>" +
        userNum + " * 8 = " + userNum * 8 + "<br>" +
        userNum + " * 9 = " + userNum * 9 + "<br>" +
        userNum + " * 10 = " + userNum * 10 + "<br>" +
        userNum + " * 11 = " + userNum * 11 + "<br>" +
        userNum + " * 12 = " + userNum * 12 + "<br>"
    );

    if(userNum < 6)
    {
        window.bgColor = "red";
    }
    else if(userNum > 6)
    {
        window.bgColor = "blue";
    }
    else
    {
        window.bgColor = "white";
    }
}
else if((userNum > 12) || (userNum < 1))
{
    window.alert("Error: Input value outside requested range");
    window.reload();
}
else
{
    window.alert("Error: Input value not a number");
    window.reload();
}

其他一些说明:

  • 一般情况下,请避免document.write。使用DOM API(或像jQuery这样的包装器库)在页面上显示信息更有用。
  • 您的第二个if是多余的,除非您有意允许用户输入非数字并依赖与NaN的比较始终为假。
  • bgColor属性很久以后被CSS弃用并取代。所以document.body.style.backgroundColor = "color-goes-here";