2017-04-20 108 views
1

我对Javascript有点新,我试图去了解它。我目前正在创建一段代码,它提示用户输入他们的姓名,并显示它是否有5个或更多,更少或更确切的字符。但它仍然显示5个字符,即使它超过5个字符。如果有人可以帮助我调试这将是不胜感激。window.prompt的值不返回正确的“长度”属性值

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3school.org/1999/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Understanding Javascript</title> 
    <script type="text/javascript" 
      language="javascript"> 
    username = prompt("Please enter your name"); 
    message = "Hello," + username + " Your name has "; 
    nameLen = username.Length; 
    if (nameLen > 5) 
     message = message + "more than "; 
    else if (nameLen < 5) 
     message = message + "less than "; 
    else 
     message = message + "exactly "; 
    message = message + " 5 characters"; 

    alert(message) 
    </script> 
</head> 
<body> 
</body> 
</html> 
+1

它看起来像一个错字 - 你有'username.Length',它应该是'username.length'。你的变量可以有你想要的任何名字,但'.length'应该全部小写。 –

回答

1

问题就出在这条线的位置:

nameLen = username.Length; 

此行实际上是设置nameLen等于undefined

在其中设置你的if声明的方式,

if (nameLen > 5) { // undefined is not greater than 5 

} else if (nameLen < 5) { // undefined is not less than 5 

} else { // undefined is not equal to 5 either, but who cares? it's a broad else 

} 

意味着它会一直进入else条款。

为了解决这个问题,只需将username.Length更改为username.length即可。 JavaScript是一种区分大小写的语言,因此如果您不小心,这些类型的错误在将来可能会出现得更频繁。

+0

谢谢你的提示。我不知道这是一个区分大小写的语言。 –

+1

@BenjaminNguyen没问题 - 牢记这一点非常重要。另外,当分离你的'if/else'子句时,我会建议总是使用'{'和'}' - 大括号。之前的回答者(现在已经删除了他的答案)误解了你的代码,仅仅因为你没有花括号,所以包含这些是最重要的。 – think123

+0

这绝对是大小写敏感!如果您启用了JavaScript错误报告,那么您应该能够在浏览器中检查您的开发者控制台,并且会报告类似这样的问题。 –

0

基本上,username.length应该修复它。输入属性名称。这段代码看起来像是有效的。

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 
     "http://www.w3school.org/1999/xhtml1-transitional.dtd"> 
 
     <html xmlns="http://www.w3.org/1999/xhtml"> 
 
     <head> 
 
      <meta charset="utf-8" /> 
 
      <title>Understanding Javascript</title> 
 
     <script type="text/javascript" 
 
       language="javascript"> 
 
     username = prompt("Please enter your name"); 
 
     message = "Hello, " + username + " Your name has "; 
 
     nameLen = username.length; 
 
     if (nameLen > 5) 
 
      message = message + "more than "; 
 
     else if (nameLen < 5) 
 
      message = message + "less than "; 
 
     else { 
 
      message = message + "exactly "; 
 
      } 
 
     message = message + " 5 characters"; 
 
    
 
     alert(message) 
 
     </script> 
 
    </head> 
 
    <body> 
 
    </body> 
 
    </html>

0

精确语法:

nameLen = username.length;