我一直在用一个简单的表格来计算某人订单的总金额。我正在为表单使用预设框架,该框架使用输入文本作为项目的数量。
出于某种原因,当我访问该值时,将其转换为字符串,然后调用它的长度,我收到错误“SCRIPT438:对象不支持属性或方法'长度'”。当我对值的类型执行了console.log()时,我确实得到了一个字符串。
为什么我收到此错误?
如果不清楚,我只是在寻找这个错误的解决方案,而不是代码批评。
控制台文字: 日志:a,小:2 日志:textVal:2 日志:textVal的类型:字符串 SCRIPT438:对象不支持属性或方法'length' 第130行
function numOnly(a){//used to check that only a number has been inputted into the quantity box
var textVal = document.getElementById(a).value.toString();
console.log("textVal: "+textVal);
console.log("type of textVal: "+typeof textVal);
var returnVal = '';
for(var i = 0;i<textVal.length();i++){
if(textVal.charAt(i)=='0'||textVal.charAt(i)=='1'||textVal.charAt(i)=='2'||textVal.charAt(i)=='3'||textVal.charAt(i)=='4'||textVal.charAt(i)=='5'||textVal.charAt(i)=='6'||textVal.charAt(i)=='7'||textVal.charAt(i)=='8'||textVal.charAt(i)=='9'){
returnVal+=textVal.charAt(i);
}//if
}//for
console.log("a after loop: "+a);
return returnVal;
function numOnly(a){//used to check that only a number has been inputted into the quantity box WHY DOES IT GET AN OBJECT WINDOW
var textVal = '';
textVal = document.getElementById(a).value.toString();
console.log("textVal: "+textVal);
console.log("type of textVal: "+typeof textVal);
var returnVal = '';
for(var i = 0;i<textVal.length();i++){
if(textVal.charAt(i)=='0'||textVal.charAt(i)=='1'||textVal.charAt(i)=='2'||textVal.charAt(i)=='3'||textVal.charAt(i)=='4'||textVal.charAt(i)=='5'||textVal.charAt(i)=='6'||textVal.charAt(i)=='7'||textVal.charAt(i)=='8'||textVal.charAt(i)=='9'){
returnVal+=textVal.charAt(i);
}//if
}//for
console.log("a after loop: "+a);
return returnVal;
}//numOnly()
我正在调用函数
case "S":
a=document.getElementById(sizeId[i]);
console.log("a, small: "+a.value);
if(a!=null) SSTotal+=(parseInt(numOnly(sizeId[i]))*prices[1]);
break;
答案 0 :(得分:2)
长度属性不是方法,所以尝试:
textVal.length
而不是
textVal.length()
此外,您不需要对值toString()
执行操作。它本身就是字符串。