簡體   English   中英

Javascript提示取消了While循環中的行為

[英]Javascript Prompt Cancelled Not Behaving in While Loop

我有一個提示,基本上是必填字段,不能包含小數。 我有一個while循環,無論單擊“確定”還是“取消”,該循環都應繼續提示用戶輸入信息,直到顯示數字為止。 只要單擊“確定”按鈕,一切正常。 它會繼續提示是否留空並單擊確定,或者是否提供帶小數的數字並單擊確定。 但是,如果單擊取消,它將不會繼續提示。

var rmiles = prompt("Please indicate actual miles driven for payroll");
    while (rmiles == null | rmiles == "null" | rmiles == " " | rmiles.indexOf(".") != -1) {
        alert("Mileage is required when arriving on site and can only be whole numbers.  No Decimals.  Please enter 0 if you did not intend to arrive on site.");
        rmiles = prompt("Please indicate actual miles driven for payroll");
    }

我認為這個問題是在你的while條件-你正在做的按位OR | 在所有條件下。 這意味着將始終調用rmiles.indexOf(".") ,即使單擊“取消”時promptrmiles設置為null 這是因為按位或不會短路。

嘗試邏輯OR || 這確實會短路,從而避免了空引用錯誤:

while (rmiles == null || /*...*/

因為當用戶單擊“取消”時rmiles為null ...因此rmiles.indexOf會產生錯誤/異常並殺死循環。

暫無
暫無

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

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