关于在js中prompt输入值为0的问题

写了一个在同一个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”,因而导致崩溃,不知是否有大神知道原因


湛瞳
浏览 2263回答 1
1回答

慕粉3769977

可以先做一个测试: var x=""; var t=x.substring(1,2); alert(t>=0); // truealert(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++)
打开App,查看更多内容
随时随地看视频慕课网APP