2017-02-16 64 views
0

當我運行我的代碼時,我要進入'做'循環,然後我輸入'新',然後嘗試添加新的數組,但由於某種原因,我的代碼在if(answ == "new")開始循環。我究竟做錯了什麼?Javascript陣列推送問題或循環問題

這裏是我的代碼:

var answ; 
var arr = []; 
do{ 
    answ = prompt("What would like to do?"); 
if(answ == "new"){ 
    var add = prompt("Add new todo: "); 
    add = arr.push(answ); 
} 

else if(answ == "list"){ 
     for(var i=0; i<arr.length; ++i){ 
     answ = answ + arr[i] + '<br>'; 
    } 

} 

else if(answ == "delete"){ 
    var choose = prompt("Which one (index)?"); 
    delete arr[choose]; 
} 
}while(answ !== "quit") 

不要在瀏覽器中目前的形式(永無止境的循環)運行

+0

你問「會想做什麼:」一開始都在你的循環,並再次,如果它不匹配任何東西;這意味着你將不得不「退出」兩次。只要擺脫第二個,你應該沒問題。 – Hamms

+0

最後的'else'沒用!只是擺脫它! –

+0

@Hamms我試過了,但它仍然在 'if(answ ==「new」)循環var add = prompt(「Add new todo:」); add = arr.push(answ); }' –

回答

0

看看這可以幫助您馬克。

你的邏輯和存儲值有一些錯誤,並且你沒有顯示值,如果我建議是正確的。

var answ; 
 
var arr = []; 
 
do { 
 
    answ = prompt("What would like to do?"); 
 
    if (answ == "new") { 
 
    var add = prompt("Add new todo: "); 
 
    arr.push(add); 
 
    } else if (answ == "list") { 
 
    var output = ''; 
 
    for (var i = 0; i < arr.length; ++i) { 
 
     output += arr[i] + '\r\n'; 
 
    } 
 
    alert('listing:' + '\r\n' + output); 
 

 
    } else if (answ == "delete") { 
 
    var choose = prompt("Which one (index)?"); 
 
    arr.splice(choose,1); 
 
    } else { 
 
    if(answ !== "quit") 
 
     alert('option invalid!'); 
 
    } 
 
} while (answ !== "quit")

+0

我看到你做了什麼,它看起來更好,但我仍然得到「添加新的待辦事項:」消息的循環。 –

+0

你想做什麼?一旦你輸入新的...你想繼續添加待辦事項? – andrepaulo

+0

不,我想讓程序問「想做什麼?」然後你會回答你需要的東西,直到你放棄它。 –