var.replace不是一个函数

我正在使用下面的代码来尝试在Javascript中修剪string,但得到标题中提到的错误:

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

编辑:

我解决了这个问题….对不起,我应该把代码放在我怎么称呼它……意识到我意外地传递了表单字段本身的对象,而不是它的价值。

我的猜测是,调用你的trimfunction的代码实际上并没有传递一个string。

如果您发布该代码,我可以更新我的答案。

可能的问题:

  • variables没有定义;
  • variables是NUMBER (而不是string);
    这种情况的解决scheme
    num=35; num.replace(3,'three'); =====> ERROR
    num=35; num.toString().replace(3,'three'); =====> CORRECT !!!!!!
    num='35'; num.replace(3,'three'); =====> CORRECT !!!!!!
  • variables是对象 (而不是string);

replace不会取代数字。 它仅replacestring。 这应该工作。

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

如果你只想修剪string。 你可以简单地使用“.trim()”

在你真正执行你的函数之前,你应该做一些validation:

 function trim(str) { if(typeof str !== 'string') { throw new Error('only string parameter supported!'); } return str.replace(/^\s+|\s+$/g,''); } 

你不传递一个string,否则它会有一个replace方法。 我希望你没有inputfunction trim(str) { return var.replace(blah); } 而不是return str.replace

在数字的情况下,你可以尝试转换为string:

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

你打电话给你的function吗? IE浏览器。 是你传递的东西,作为一个参数,真的是一个string?

否则,我没有看到你的代码有问题 – 下面的例子按预期工作

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

但是,如果你用非串的方式调用函数,你的确会得到上面的错误:

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

你应该使用toString()方法将java脚本转换成string之前,因为replace方法是一个string函数。

我解决了这个问题….对不起,我应该把代码放在我如何调用它。意识到我意外地传递了表单字段本身的对象,而不是它的价值。

无论如何感谢您的回复。 🙂