簡體   English   中英

If / Else語句嵌套在While循環中

[英]If/Else statement nested in While loop

(我對JavaScript非常陌生,正在編寫此書來嘗試並習慣於使用它-這就是為什么我使用一個對象來存儲用戶名和密碼的原因。我在學徒時期學習了此方法,但這是為什么是在我自己的時間里,以進一步了解JS)我嘗試編寫一小段代碼,要求用戶輸入用戶名,該用戶名將與對象“ userNames ”中的屬性名稱進行交叉檢查。 然后要求用戶輸入該用戶的密碼,然后將其與設置為具有正確用戶名的相應屬性的值的密碼進行檢查。 我覺得好像是問題的一部分是我嘗試使用“ 用戶名 ”的變量“enteredPassword”(設置為用戶輸入的密碼的方法)來完成。 如果3次嘗試后用戶名或密碼不正確,那么我想關閉窗口。 我的文本編輯器在說If語句缺少分支,並且我不確定這是否會影響它的工作。

 var userNames = {Tom:"PassW0rd", Bill:"Apples40C0lander", Ryan:"M1911p4ck4ge"}; var Greeting = "Insert Username:"; var i = 0; while (i < 3) { var enteredUserName = prompt(Greeting); var enteredPassword = prompt("enter password for " + enteredUserName); if ((userNames.hasOwnProperty(enteredUserName)) && (userNames.enteredUserName==enteredPassword)) { alert("Welcome"); break; } else { alert("incorrect Username or Password"); alert(""); window.open('', '_self', ''); window.close(); window.open('', '_self', ''); window.close(); i++ }} 

一個簡單的更改就足夠了: userNames[enteredUserName]
JavaScriptObject也可以像array一樣進行訪問。
如果使用userNames.enteredUserName ,它將檢查{enteredUserName:somevalue} (即, enteredUserName將被視為String 。但是,如果您將其用作userNames[enteredUserName] ,則enteredUserName將被視為變量並指向Object索引。
請嘗試以下代碼段。

 var userNames = {Tom:"PassW0rd", Bill:"Apples40C0lander", Ryan:"M1911p4ck4ge"}; var Greeting = "Insert Username:"; var i = 0; while (i < 3) { var enteredUserName = prompt(Greeting); var enteredPassword = prompt("enter password for " + enteredUserName); if ((userNames.hasOwnProperty(enteredUserName)) && (userNames[enteredUserName]==enteredPassword)) { alert("Welcome"); break; } else { alert("incorrect Username or Password"); alert(""); window.open('', '_self', ''); window.close(); window.open('', '_self', ''); window.close(); i++ }} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM