Javascript 未定义不是函数“”

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

为什么会出现未捕获类型错误: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(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看起来更好,但您的代码确实有效。有很多方法可以将数字转换为字符串。大多数情况下,添加空字符串是最快的方法。当然,这取决于浏览器和转换的数量。更多信息,这看起来像是一种黑客行为。在我看来,转换看起来更好,但您的代码确实有效。有很多方法可以将数字转换为字符串。大多数情况下,添加空字符串是最快的方法。当然当然,这取决于浏览器和转换量。请参阅详细信息