259 function isNumeric(strString) {
260 var strValidChars = "0123456789";
261 var strChar;
262 var blnResult = true;
263
264 if (strString.length == 0) {
265 return false;
266 }
267
268 // Test strString consists of valid characters listed above
269 for (i = 0; i < strString.length && blnResult == true; i++)
270 {
271 strChar = strString.charAt(i);
272 if (strValidChars.indexOf(strChar) == -1)
273 {
274 blnResult = false;
275 }
276 }
277 return blnResult;
278 }
Firefox在第264行崩溃,并显示以下消息:
strString未定义
为什么这段代码失败了? strString是isNumeric函数的形式参数,因此应始终定义它。
答案 0 :(得分:4)
调用函数的代码没有为该变量提供定义的值。
答案 1 :(得分:2)
重新创建错误......
javascript:alert(isNumeric(undefinded));
并修复它......
function isNumeric(strString) {
strString = strString + "";
但为什么不使用正则表达式?
function isNumeric(val) {
return /^[0-9]+$/.test(val);
}
答案 2 :(得分:0)
我不确定,但看看这个功能我会说这是正则表达式的最佳位置。为什么不是你using one?它看起来比你所用的功能更强大来自Code Toad。
答案 3 :(得分:0)
您可能正在从调用代码向函数传递未定义的值。 length属性仅为字符串和数组定义,因此是错误消息。您可以像这样测试undefined:
if (typeof strString == "undefined") {
return false;
}
答案 4 :(得分:0)
替换
if (strString.length == 0) {
与
if (strString == null || strString.length == 0) {
答案 5 :(得分:0)
为什么你说这是正式参数??
JavaScript对参数非常灵活;当您传递的参数数量与定义不同时,它不会发出任何警告。这对于来自C / C ++背景的人来说相当灵活但也令人困惑。