Var.replace не является функцией

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

function trim(str) {
    return str.replace(/^\s+|\s+$/g,'');
}

Edit:

Я исправил проблему... извините, я должен был поставить код на то, как я это называл.... понял, что я случайно передавал объект самого поля формы, а не его значение.

Ответ 1

Я предполагаю, что код, который вызывает вашу функцию trim самом деле не передает ей строку.

Чтобы это исправить, вы можете сделать строку str, например: str.toString().replace(...)
... как указал Альпер ниже.

Ответ 2

возможные проблемы:

  • переменная NUMBER (вместо строки);
    num=35; num.replace(3,'three'); =====> ERROR
    num=35; num.toString().replace(3,'three'); =====> CORRECT !!!!!!
    num='35'; num.replace(3,'three'); =====> CORRECT !!!!!!
  • переменная является объектом (вместо строки);
  • переменная не определена;

Ответ 3

Заменить не заменит числа. Он заменяет только строки.

Это должно работать.

function trim(str) {
    return str.toString().replace(/^\s+|\s+$/g,'');
}

Если вы только хотите обрезать строку. Вы можете просто использовать "str.trim()"

Ответ 4

Вероятно, вы должны выполнить некоторые проверки перед тем, как выполнять свою функцию:

function trim(str) {
    if(typeof str !== 'string') {
        throw new Error('only string parameter supported!');
    }

    return str.replace(/^\s+|\s+$/g,'');
}

Ответ 5

Вы не передаете строку, иначе она будет иметь метод replace. Надеюсь, вы не набрали function trim(str) { return var.replace(blah); } вместо return str.replace.

Ответ 6

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

В противном случае я не вижу проблемы с вашим кодом - приведенный ниже пример работает как ожидалось

function trim(str) {
    return str.replace(/^\s+|\s+$/g,'');
}


trim('    hello   ');  // --> 'hello'

Однако, если вы вызываете свой functoin с чем-то нестрочным, вы действительно получите ошибку выше:

trim({});  // --> TypeError: str.replace is not a function

Ответ 7

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

var stringValue = str.toString();
return stringValue.replace(/^\s+|\s+$/g,'');

Ответ 8

Вы должны использовать toString() метод java script для преобразования в строку before, потому что метод replace является строковой функцией.

Ответ 9

Я исправил проблему... извините, я должен был поставить код на то, как я тоже это называл.... понял, что я случайно передавал объект самого поля формы, а не его значение.

Спасибо за ваши ответы.:)