indexOf 不是一个函数。

12

我目前正在使用以下代码。在控制台中,它会抛出:

未捕获的 TypeError: TotalAccountBalance.indexOf 不是函数

我不知道还能做什么。搜索并没有帮助太多。

var CurrentPreservedBalance, CurrentGeneralAccountBalance, TotalAccountBalance;
    CurrentPreservedBalance = '20.56';
    CurrentGeneralAccountBalance = '20.56';
    if( CurrentPreservedBalance && CurrentGeneralAccountBalance ){
        TotalAccountBalance = +CurrentPreservedBalance + +CurrentGeneralAccountBalance;
        console.log( TotalAccountBalance.indexOf('.') );
    } else {
        $('#total-fnpf-account-balance').val('$0.00');
        $('#total-account-balance').val('$0.00');
    }

1
在中间去掉一个加号 +CurrentPreservedBalance + +CurrentGeneralAccountBalance;。然后 TotalAccountBalance. 就可以正常工作了。还有,前面的那个加号也要去掉。另外,从 '20.56' 中删除引号。 - zer00ne
顺便问一下,你为什么需要小数点的indexOf函数? - zer00ne
@zer00ne,我的客户有个很蠢的要求,我甚至不明白这到底是怎么回事。 - Devil Raily
啊,不用再说了,很多客户确实有极其愚蠢的时刻。 - zer00ne
3个回答

33

indexOf() 是字符串的方法,而不是数字的方法。

console.log( TotalAccountBalance.toString().indexOf('.') );

此外,如果TotalAccountBalance存在某些“null”情况,则可以将其转换为以下形式以避免错误:console.log( String(TotalAccountBalance).indexOf('.') ); - Umair Malhi

2
TotalAccountBalance = +CurrentPreservedBalance + +CurrentGeneralAccountBalance;

TotalAccountBalance 是将两个数字相加的结果(我们知道它们是数字,因为您使用了一元加运算符进行转换)。这是另一个数字。

indexOf 是在字符串而不是数字上找到的方法。

您可以将其转换为字符串:

(TotalAccountBalance + "").indexOf('.')

1
TotalAccountBalance = +CurrentPreservedBalance + +CurrentGeneralAccountBalance;

一元加运算符将字符串转换为数字;这显然是期望的行为,以获得正确的数学结果。

如果您想使用字符串函数(例如indexOf),则需要将其转换回字符串:

console.log( ("" + TotalAccountBalance).indexOf('.') );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接