2017-04-20 105 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;