2013-02-22 57 views
2

我剛剛開始使用Javascript,並且一直試圖製作一個說你好的小腳本。那就是:在提示時取消和空輸入的不同值

function hello() { 

    while (!name) { 

     var name = prompt("What's your name", ""); 
     var greetingElement = document.getElementById("greeting"); 

     greetingElement.style.color = "red"; 

     if (name == null) { 
      greetingElement.innerHTML = "Boring!"; 
      break; 
     } 
     else if (name == 0) { 
      greetingElement.innerHTML = "Don't you have a name"; 
     } 
     else { 
      greetingElement.innerHTML = "Hello " + name + "!"; 
     } 
    } 
} 
window.onload = hello; 

我的問題是,我想顯示一個消息,如果你按取消就提示和不同的,如果你不輸入輸入,然後按OK。據我所知,這兩種行爲都會導致null值,那麼如何顯示不同的消息呢?

我在代碼中所做的顯然不是最優的我知道這一點。

我也希望while循環結束,如果你按取消它現在不是。

回答

3

如果您需要檢查一些不同的falsy值,您需要將它們與Strict equal運算符進行比較。你可以在下面的代碼中看到它。我也對你的代碼做了一些小的修改,以使它能夠流暢地工作。

function hello(){ 
    var greetingElement = document.getElementById("greeting"); 
    greetingElement.style.color = "red"; 
    while (!name) { 
     var name = prompt("What's your name?", ""); 
     if (name === null || name === false) { // Canceled 
      greetingElement.innerHTML = "Boring!"; 
      break; // Leave this out, if the name is mandatory 
     } 
     if (name === "") { // OK, but no name 
      greetingElement.innerHTML = "Don't you have a name?"; 
     } else { // OK with a name 
      greetingElement.innerHTML = "Hello " + name + "!"; 
     } 
    } 
} 

現場演示在jsFiddle

+0

謝謝!工作真的很好,我明白了! – user2100788 2013-02-22 21:45:29