2017-09-24 60 views
-1

我从来没有使用过这个网站,而我也是编程新手,所以请耐心等待。我的任务要求我提示用户输入1到12之间的数字,再次询问他们是否不这样做,并根据输入的数字更改背景颜色。在6变红色,6是白色,6以上是蓝色。If语句不会运行并且否定以前的代码

出于某种原因,如果我注释掉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

你有没有试过检查控制台的错误?抛出一个错误,你的代码不会执行(这就是为什么_“网页上没有任何事情发生”),所以当你评论if-else部分时,不会再有错误。 – yuriy636

+2

除了逻辑错误之外,在document.write调用中还有基本的语法错误。 –

+2

@ T.J.Crowder我看到document.write的问题,但我不认为这与重复问题 –

回答

1

如果我取消它,什么都不会发生在所有的网页上,我不知道为什么。

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

其中一个关键问题是控制台,您可以在大多数操作系统上通过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";
+0

就是这一切,谢谢。窗户没有重新加载,因为我认为它会,但我可以弄清楚。我只为现在使用的这个类使用document.write。我相当肯定教授用它来说明BOM和DOM的属性和结构。但是,你认为你可以更多地解释为什么我的第二条陈述是多余的? –