2013-09-18 4 views
0

Я пытаюсь удалить запятую из числа.«replace is not a function»

var thisbill_str = ""; 
thisbill = $('#linebill_' + z).val(); 
if (isNaN(thisbill)) { thisbill = 0.00; } 
thisbill_str = thisbill; 
thisbill = thisbill_str.replace(/,/g, ""); 

Этот Javascript код дает мне ошибку:

TypeError: thisbill_str.replace is not a function 

Это не имеет значения, если я дам ему 'г' и 'I' флаги. Это происходит только в том случае, если в строке НЕ имеется запятая, т. Е. Если строка «515,00». Если строка была «5 515,00», то она отлично работает. Я ничего не вижу в документации, которая говорит мне, что строка, подлежащая замене, фактически существует. Что мне не хватает, и что это лучший способ сделать это?

+0

Пожалуйста, покажите нам, что именно в этом 'thisbill_str' есть, когда оно не работает. Еще лучше сделать jsFiddle, который показывает проблему. Вероятно, 'thisbill_str' не является строкой. – jfriend00

ответ

5

Это, скорее всего, вызвано тем, что thisbill_str является чем-то другим, кроме строки. Может быть, у вас есть какой-то другой код, который автоматически преобразует thisbill_str в число?

Вы можете преобразовать обратно в строку, используя String(thisbill_str).

Полный код будет:

thisbill = String(thisbill_str).replace(",", "") 
+0

Это сработало! Спасибо. Мне просто пришлось отбросить его на строку. Я забыл, что javascript на самом деле не сильно типизирован. – McAuley

1

TypeError: thisbill_str.replace is not a function

thisbill_str не может быть принужден, чтобы объект Струнный, поэтому он не имеет метод replace.

Является ли значение thisbill_str null?

+0

Если это было 'null/undefined', это была бы другая ошибка, так как эти значения * не могут * иметь свойства ;-) Я собираюсь угадать элемент DOM, но та же идея:' thisbill_str' не оценивает строку. – user2246674

+0

Я получаю эту ошибку, когда она NULL. –

+0

Нет, я инициализировал его «", а потом я положил в него поплавок. Скажем, поплавок составил 515,00. – McAuley

2
thisbill_str = thisbill; 

Вы должны быть литья в строку здесь. thisbill_str все еще номер, поэтому он не имеет метода замены.

thisbill_str = thisbill + ''; 
Смежные вопросы