Javascript 未定义不是函数“”
为什么会出现未捕获类型错误:undefined不是函数 我的页面中没有J查询 这是我的密码:Javascript 未定义不是函数“”,javascript,Javascript,为什么会出现未捕获类型错误:undefined不是函数 我的页面中没有J查询 这是我的密码: function CDec(Currency) { var number = Currency.replace(/[^0-9\.]+/g,""); return number; } 函数的调用 SellPrice.value = "$" + CurrencyFormat(CDec(ListPrice.value * (1 + CDec(Markup.value))) * CDec(M
function CDec(Currency) {
var number = Currency.replace(/[^0-9\.]+/g,"");
return number;
}
函数的调用
SellPrice.value = "$" + CurrencyFormat(CDec(ListPrice.value * (1 + CDec(Markup.value))) * CDec(Mutiplier.value));
及
只需将作为参数传递的数字转换为字符串,例如:
function CDec(Currency) {
var number = (Currency + '').replace(/[^0-9\.]+/g,"");
return number;
}
但我建议您首先验证输入数据。只需将作为参数传递的数字转换为字符串,例如:
function CDec(Currency) {
var number = (Currency + '').replace(/[^0-9\.]+/g,"");
return number;
}
function CDec(Currency) {
Currency = Currency.toString();
var number = Currency.replace(/[^0-9\.]+/g,"");
return number;
}
但我建议您首先验证输入数据。如果您有意见,最好替换已知的可能字符并验证返回结果
function CDec(Currency) {
Currency = Currency.toString();
var number = Currency.replace(/[^0-9\.]+/g,"");
return number;
}
function CDec(Currency) {
if (typeof Currency !== "number")
Currency = parseFloat(Currency.toString().replace(/[£$%]/g, ""));
return Currency;
}
console.log( CDec(1.22) );
console.log( CDec(-1.22) );
console.log( CDec("$1.22") );
console.log( CDec("$1.22%") );
console.log( CDec("-£1.22") );
if (isNaN(CDec("Woof"))
alert("invalid!");
您可能还应该缩放您的值:鉴于您的注释,最好替换已知的可能字符并验证返回结果
function CDec(Currency) {
if (typeof Currency !== "number")
Currency = parseFloat(Currency.toString().replace(/[£$%]/g, ""));
return Currency;
}
console.log( CDec(1.22) );
console.log( CDec(-1.22) );
console.log( CDec("$1.22") );
console.log( CDec("$1.22%") );
console.log( CDec("-£1.22") );
if (isNaN(CDec("Woof"))
alert("invalid!");
您可能还应该调整您的值:replace不是Currency对象上的一个方法?显示如何调用此代码的完整示例。Currency在您的示例中是一个数字,因此Currency.toString.replace…这使得替换非数字有点多余…一个*操作的结果始终是一个数字,而不是一个字符串。没有完整的snippet,我只能建议最简单的方法是从数字到字符串的预转换,Currency=Currency.toString;在CDec函数的顶部,replace不是Currency对象上的一个方法?显示如何调用此代码的完整示例。在您的示例中,Currency是一个数字,所以Currency.toString.replace…这使得替换非数字成为bit冗余…一个*操作的结果总是一个数字,而不是一个字符串。如果没有完整的代码片段,我只能建议最简单的方法是从数字到字符串的预转换,Currency=Currency.toString;在CDec函数的顶部,这看起来像是一个黑客。在我看来,toString看起来更好,但您的代码确实有效。有很多方法可以将数字转换为字符串。大多数情况下,添加空字符串是最快的方法。当然,这取决于浏览器和转换的数量。更多信息,这看起来像是一种黑客行为。在我看来,转换看起来更好,但您的代码确实有效。有很多方法可以将数字转换为字符串。大多数情况下,添加空字符串是最快的方法。当然当然,这取决于浏览器和转换量。请参阅详细信息