亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于在js中prompt輸入值為0的問題

關于在js中prompt輸入值為0的問題

湛瞳 2016-08-09 16:17:22
寫了一個在同一個prompt輸入框內輸入兩個數字比較大小的函數,用substring判斷字符是否為數字來區分兩個數字,代碼如下:function bijiao(){??var x = prompt("輸入兩個數字(請用標點符號間隔)");//x為所有輸入的長度??var len = x.length;//輸入字符的長度??var str = '';//用來獲取輸入的數字??var x1 = 0;//每個數字起始下標??var i = 0;//字符下標??var z = 0;//用來判斷數字個數??var arr = new Array();//用來承裝比較的數字??for (x1; x1 < len;) {???i = x1;//從數字的起始位置開始???for (;x.substring(i, i+1)>0 && x.substring(i, i+1)<=9;i++) {//判斷每個字符是否為0-9之間的數字????str = str + x.substring(i, i+1);???}???x1 = i + 1;//重置數字起始下標???if (str != '') {//讀數字????document.write('輸入的第' + 'z' + '個數字為:' + str + '。<br>');????arr[z] = Number(str);????str = '';????++z;???}???if (z == 2) {//當兩個數字讀取完畢之后跳出循環????break;???}??}??if (arr[0] > arr[1]) {???alert("最大值為" + arr[0]);??}else if (arr[0] < arr[1]){???alert("最大值為" + arr[1]);??}else{???alert(arr[0] + "和" + arr[1] + "相等");??}?}?bijiao();其中有一個有意思的部分,當判斷條件為“for (;x.substring(i, i+1)>0 && x.substring(i, i+1)<=9;i++)”時可以正常比較,只是識別不到用戶輸入的“0”;可是當改成“for (;x.substring(i, i+1)>=0 && x.substring(i, i+1)<=9;i++)”時,所有的瀏覽器都會刷新很久但出不來結果,懷疑是將“0”識別為“null”,因而導致崩潰,不知是否有大神知道原因
查看完整描述

1 回答

已采納
?
慕粉3769977

TA貢獻16條經驗 獲得超7個贊

可以先做一個測試:?

var x="";

var t=x.substring(1,2);

alert(t>=0); // true

alert(t>0);//false

在js中空字符串和0是相等的。

所以當你改為>=0時,for (;x.substring(i, i+1)>=0 && x.substring(i, i+1)<=9;i++)一直不會結束。所以這句話應該改為?for (;i<len&&?x.substring(i, i+1)>=0 && x.substring(i, i+1)<=9;i++)


查看完整回答
反對 回復 2016-08-10
  • 湛瞳
    湛瞳
    親,謝謝你,在你的提醒下再加一個判斷條件x.substring(i, i+1).length > 0上面的例子就可以運行了,null的長度是讀取不到的,而‘0’的長度卻可以獲取到。thank you
  • 1 回答
  • 0 關注
  • 2337 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號