javascript - 在IE的JavaScript中使用.trim( )

  显示原文与译文双语对照的内容

我试图将 .trim() 应用到一个JavaScript程序中的一个字符串。 它在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
时间:

添加以下代码,向字符串添加trim功能。


if(typeof String.prototype.trim!== 'function') {
 String.prototype.trim = function() {
 return this.replace(/^s+|s+$/g, ''); 
 }
}

IE 中没有实现该函数。 如果你使用的是 jQuery,你可以使用 $.trim() 而不是( http://api.jquery.com/jQuery.trim/ ) 。

不幸的是,没有 跨浏览器 JavaScript支持 trim() 。

如果你没有使用 jQuery ( 它有一个. trim() 方法),你可以使用以下方法向字符串添加trim支持:


String.prototype.trim = function() {
 return this.replace(/^s+|s+$/g,"");
}
String.prototype.ltrim = function() {
 return this.replace(/^s+/,"");
}
String.prototype.rtrim = function() {
 return this.replace(/s+$/,"");
}

当试图从输入中修剪一个值,然后询问它是否等于时,我遇到了类似的问题:


if ($(this).val().trim() =="")

然而,这给IE6的工作带来了一个扳手- 8. 令人厌烦的是,我试图把它当作这样的东西:


 var originalValue = $(this).val();

,我使用了jquery方法修剪,这在所有浏览器中都能完美地工作。


var originalValueTrimmed = $.trim($(this).val()); 
 if (originalValueTrimmed =="") {.. . }

我已经编写了一些代码来实现trim功能。

。trim - 去除 ( 修剪左边):


function ltrim(s)
{
 var l=0;
 while(l <s.length && s[l] == ' ')
 { l++; }
 return s.substring(l, s.length);
} 

。trim ( 右剪裁):


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));
}

或者

我们可以使用正则表达式。


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

有用的解释

我认为JavaScript标准中没有本机 trim() 方法。 也许Mozilla提供了一个,但是如果你想要在 IE 中,你需要自己写。 在上有几个版本这里页面

我在IE9中也有同样的问题,但是当我声明支持的html版本时,在第一行的第一行


<!DOCTYPE html>
<HTML>
<HEAD>...
.
.

问题已经解决。

...