2016-10-02 2 views
5

В настоящее время я работаю со следующим кодом. В консоли он бросаетindexOf не является функцией

Uncaught TypeError: TotalAccountBalance.indexOf is not a function

Я не знаю, что еще делать. Поиск не очень помог.

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

+0

BTW, зачем вам нужен десятичный индекс indexOf? – zer00ne

+0

@ zer00ne У моего клиента есть это глупое требование, которое я даже не понимаю, что происходит. –

ответ

7

indexOf() - это метод строк, а не номеров.

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

Короткие, простые и сладкие. Спасибо, это работает. –

+0

Также в случае, если существует сценарий «null» для «TotalAccountBalance», он может быть преобразован таким образом, чтобы избежать ошибки: 'console.log (String (TotalAccountBalance) .indexOf ('.'));' –

2
TotalAccountBalance = +CurrentPreservedBalance + +CurrentGeneralAccountBalance; 

TotalAccountBalance является результатом принятия двух чисел (мы знаем, что они являются числами, потому что вы использовали унарный плюс оператор, чтобы преобразовать их) и добавляя их вместе. Это еще одно число.

indexOf это метод, который вы найдете на строк не чисел.

Вы можете преобразовать в строку:

(TotalAccountBalance + "").indexOf('.') 
1
TotalAccountBalance = +CurrentPreservedBalance + +CurrentGeneralAccountBalance; 

unary plus operators преобразования строк в числа; это, очевидно, желательное поведение, чтобы получить правильный математический результат.

Если затем вы хотите использовать функцию строки (например, indexOf), вам необходимо преобразовать обратно в строку:

console.log(("" + TotalAccountBalance).indexOf('.')); 
Смежные вопросы