题目一:var arr = [ '100px', 'abc'-6, [], -98765, 34, -2, 0, '300', , function(){alert(1);}, null, document, [], true, '200px'-30,'23.45元', 5, Number('abc'), function(){ alert(3); }, 'xyz'-90 ];
1、找到arr里所有的数字:-98765, 34, -2, 0, 5
2、找到可以转成数字的:'100px', -98765, 34, -2, 0, '300', '23.45元,5
3、把转成数字以后,最大值判断出来:300
4、把 NaN 所在的位置找出来:1 14 17 1
答:
1.
function fn1(){ for(var i=0;i<arr.length;i++){ if(typeof arr[i] === 'number' && arr[i] === arr[i]){ alert(arr[i]); //-98765, 34, -2, 0, 5 //arr[i] === arr[i] 排除NaN } } } fn1();
2.3.
var arr2 = []; function fn1(){ for(var i=0;i<arr.length;i++){ if(!isNaN(parseInt(arr[i]))){ arr2.push(arr[i]); //是数字的: 100px, -98765, 34, -2, 0, 300, 23.45元, 5 } } } fn1(); var tmp = arr2; var max = tmp[0]; for(var i = 1;i < tmp.length;i++){ if(max < tmp[i]) { max = tmp[i]; } } alert(max);
4.
var arr3 = []; function fn1(){ for(var i=0;i<arr.length;i++){ if(typeof arr[i] == 'number' && isNaN(Number(arr[i]))) { arr3.push(i); } } } fn1(); alert(arr3);
题目二:
请输入QQ号码:<input type="text" />
<input type="button" value="判断" />
<br />
1、有没有输入<br />
2、输入的是不是数字<br />
3、不能有0在前面<br />
4、不能是小数<br />
5、输入的数字必须在5位以上、10位以内<br />
答:
window.onload = function(){ var oInput = document.getElementsByTagName('input'); oInput[1].onclick = function(){ if(oInput[0].value ==''){ alert('没有输入值'); oInput[0].focus(); return false; } if(typeof(Number(oInput[0].value)) != 'number'){ alert('不是数字'); oInput[0].focus(); return false; } if(parseInt(oInput[0].value) != parseFloat(oInput[0].value)){ alert('不能是小数字'); oInput[0].focus(); return false; } if(oInput[0].value.length > 5 && oInput[0].value.length >= 10){ alert('必须在5位以上、10位以内'); oInput[0].focus(); return false; } if(oInput[0].value != parseInt(oInput[0].value).toString() ){ alert('不能有0在前面'); //字符转数字,再转回字符,自然会过滤掉0开头的部分 <!-- onkeyup="this.value=this.value.replace(/^([0]{1,})|D/g,'')"--> oInput[0].focus(); return false; } } }