JavaScript中的.trim()在IE中不起作用

我试图.trim()在我的一个JavaScript程序中应用一个字符串。在Mozilla下它可以正常工作,但是当我在IE8中尝试时会显示错误。有人知道这是怎么回事吗?无论如何,我可以使其在IE中工作吗?

码:

var ID = document.getElementByID('rep_id').value.trim();

错误显示:

消息:对象不支持此属性或方法
线:604
字符:2
代码:0
URI:http://test.localhost/test.js
猪猪卡卡西2020/03/13 16:45:44

刚刚发现IE不再支持trim(),可能是在最近的Windows更新之后。如果您使用dojo,则可以使用dojo.string.trim(),它可以跨平台工作。

猴子蛋蛋2020/03/13 16:45:44

此问题可能是由IE在Intranet站点上使用兼容模式引起的。有两种方法可以解决此问题,您可以将IE更新为不在本地计算机上使用兼容模式(在IE11中:工具->兼容性视图设置->取消选中在兼容性视图中显示Intranet站点)

更好的是,您可以更新网页中的meta标签。加入:

...
<head>
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>
...

What does this mean? It is telling IE to use the latest compatibility mode. More information is available in MSDN: Specifying legacy document modes

泡芙达蒙2020/03/13 16:45:44

这是由于拼写错误getElementBy ID引起的将其更改为getElementById

YOC673502142020/03/13 16:45:44
var res = function(str){
    var ob; var oe;
    for(var i = 0; i < str.length; i++){
        if(str.charAt(i) != " " && ob == undefined){ob = i;}
        if(str.charAt(i) != " "){oe = i;}
    }
    return str.substring(ob,oe+1);
}
乐ASam2020/03/13 16:45:44

我认为trim()JavaScript标准中没有本地方法。也许Mozilla提供了一种,但是如果您想在IE中使用一种,则需要自己编写。此页面上有几个版本

十三西里GO2020/03/13 16:45:44

我在IE9中遇到了同样的问题,但是当我在

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

问题已解决。

蛋蛋飞云2020/03/13 16:45:44

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

如果您不使用jQuery(具有.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+$/,"");
}
泡芙Green2020/03/13 16:45:44

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

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

但是,这在IE6-8中投入了麻烦。够烦人的是,我试图像这样修改它:

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

但是,使用jQuery的trim方法在所有浏览器中都非常适合我。

var originalValueTrimmed = $.trim($(this).val());              
            if (originalValueTrimmed  == "") { ... }
小宇宙飞云2020/03/13 16:45:44

jQuery的:

$.trim( $("#mycomment").val() );

有人使用,$("#mycomment").val().trim();但这在IE上不起作用。

蛋蛋L2020/03/13 16:45:44

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

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

TRIM(修剪两侧):

function trim(s)
{
    return rtrim(ltrim(s));
}

要么

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

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

有用的解释

小哥猴子2020/03/13 16:45:44
猿米亚2020/03/13 16:45:44

看来该功能未在IE中实现。如果您使用的是jQuery,则可以$.trim()改用(http://api.jquery.com/jQuery.trim/)。