写了一个在同一个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++)
添加回答
举报
0/150
提交
取消