我试图在我的一个JavaScript程序中应用.trim()到字符串。它在Mozilla下运行良好,但在IE8中尝试时显示错误。有人知道这是怎么回事吗?有没有办法我可以让它在IE中工作?
代码:
var ID = document.getElementByID('rep_id').value.trim();
错误显示:
Message: Object doesn't support this property or method
Line: 604
Char: 2
Code: 0
URI: http://test.localhost/test.js
我已经写了一些代码来实现修剪功能。
LTRIM(左修剪):
function ltrim(s)
{
var l=0;
while(l < s.length && s[l] == ' ')
{ l++; }
return s.substring(l, s.length);
}
RTRIM(右修剪):
function rtrim(s)
{
var r=s.length -1;
while(r > 0 && s[r] == ' ')
{ r-=1; }
return s.substring(0, r+1);
}
修剪(修剪两边):
function trim(s)
{
return rtrim(ltrim(s));
}
OR
正则表达式也是可用的,我们可以使用。
function trimStr(str) {
return str.replace(/^\s+|\s+$/g, '');
}
有用的解释
我们可以从网上得到官方代码!
参考:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim
在任何其他代码之前运行以下代码将创建trim()(如果它在本地不可用)。
if (!String.prototype.trim) {
(函数(){
//确保我们调整BOM和NBSP
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
String.prototype.trim = function() {
返回。替换(空白,”);
};
}) ();
}
更多信息:
我刚刚发现有一个支持EcmaScript 5的js项目:
https://github.com/es-shims/es5-shim
通过阅读源代码,我们可以获得更多关于修剪的知识。
defineProperties (StringPrototype, {
/ / http://blog.stevenlevithan.com/archives/faster-trim-javascript
/ / http://perfectionkills.com/whitespace-deviations/
Trim:函数Trim () {
If (typeof this === 'undefined' || this === null) {
throw new TypeError("can't convert " + this + ' to object');
}
返回字符串(这个)。替换(trimBeginRegexp”)。替换(trimEndRegexp”);
}
}, hasTrimWhitespaceBug);