2015-08-11 3 views
0

Привет проблема заключается в следующем:Javascript toFixed не является функцией

Я определяю:

var total = 0; 

function add(a){ 
    total+=a; 
    var float_num = total.toFixed(2); 
    return float_num; 
} 

JS дать мне об ошибке сказал Uncaught TypeError total.toFixed не является функцией

Я не понимаю. общая сумма, которую я объявляю, не является типом числа?

+0

Убедитесь, что общий ряд. – evolutionxbox

+0

Я просто запускаю ваш код в хром-консоли, и каждая вещь кажется прекрасной. где вы тестировали свой код? – khanmizan

+0

@khanmizan: Попробуйте 'add (" 1 ")'. Это даст ошибку. Это то, что, как я полагаю, происходит, и сделать легкую ошибку, если вы берете ввод с веб-страницы. – slebetman

ответ

0

Проверьте, если любой из кода выше пересмотрела toFixed на прототипе номер, например

Number.prototype.toFixed = {}; 

var total = 0; 

function add(a) { 
    total += a; 
    var float_num = total.toFixed(2); 
    return float_num; 
} 

add(2) 

является одним из способов повторить ошибку.

0

Это зависит от стоимости a. Если a случается быть "string", то вы пытаетесь сделать:

"0string".toFixed(2) 

, который должен выдавать ошибку.

0

Это работает:

var total = 1.0; 

function add(a) { 
    total += a; 
    var float_num = total.toFixed(2); 
    return float_num; 
} 

console.log(add(4.89)); 

Этот код немного небезопасно, так как вы предполагаете, что с плавающей точкой, а не строка.

https://jsfiddle.net/6to7kbbm/

Это будет бросать исключение:

var total = 1.0; 

function add(a) { 
    total += a; 
    var float_num = total.toFixed(2); 
    return float_num; 
} 

console.log(add("4.89")); 
0

Ладно, так что я просто запустить ваш код несколько раз, и я могу подтвердить, что .toFixed() линия работает нормально.

Однако он работает только в том случае, если вы передадите числовое значение в функцию. Если параметр a не является числовым, то toFixed() не будет работать, как описано.

Так проблема не в функции, а в том, как вы ее называете. В вашем вопросе вы не показываете, как вы вызываете функцию, поэтому я не могу дать вам никаких прямых указаний по этому поводу, кроме того, чтобы каждый раз давать ему числовое значение.

Возможно, вы проходите через строку? Это сломает вещи (даже если строка содержит числовое значение).

Или, может быть, это null или undefined или NaN из-за ошибки или недосмотра в другом месте вашей системы? Я не могу сказать, но в таких случаях вы, вероятно, вообще не хотите называть функцию add().

0

Я нашел проблему. У моей другой функции есть код, который xxx.text (total). Он фактически конвертирует общее число обратно в строку. Это вызывает проблему.

Спасибо за вашу помощь!

0

Я думаю, что самый простой способ, чтобы предотвратить ошибки от случаться, чтобы всегда разобрать параметр как номер:

var total = 0; 
function add(a){ 
    total+=a; 
    var float_num = Number(total).toFixed(2); 
    return float_num; 
} 
Смежные вопросы