var.replace不是一个函数
我正在使用下面的代码来尝试在Javascript中修剪string,但得到标题中提到的错误:
function trim(str) { return str.replace(/^\s+|\s+$/g,''); }
编辑:
我解决了这个问题….对不起,我应该把代码放在我怎么称呼它……意识到我意外地传递了表单字段本身的对象,而不是它的价值。
我的猜测是,调用你的trim
function的代码实际上并没有传递一个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函数。
我解决了这个问题….对不起,我应该把代码放在我如何调用它。意识到我意外地传递了表单字段本身的对象,而不是它的价值。
无论如何感谢您的回复。 🙂