JavaScript中的.trim()无法在IE中运行

Jin*_*ong 458 javascript internet-explorer trim

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

码:

var ID = document.getElementByID('rep_id').value.trim();
Run Code Online (Sandbox Code Playgroud)

错误显示:

Message: Object doesn't support this property or method
Line: 604
Char: 2
Code: 0
URI: http://test.localhost/test.js

Ben*_*owe 770

添加以下代码以向字符串添加修剪功能.

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

  • 还要注意`replace(/ ^\s + |\s + $ /,'')`只删除前导或尾随空格,这不是trim函数所期望的行为.如果要删除前导和尾随空格,则需要使用`replace(/ ^\s + |\s + $/g,'')`. (92认同)
  • 好答案.注意`replace(/ ^\s\s*/,'').replace(/\s\s*$ /,'')`应该比`replace(/ ^\s + |\s + +)快3倍根据一个基准测试,Firefox 2中的$ /,'')`:http://blog.stevenlevithan.com/archives/faster-trim-javascript (8认同)
  • @Stephen你是对的,但问题不在于框架.它是关于javascript和trim. (6认同)
  • 如果你不使用jQuery,这是一个很好的解决方案.但如果没有,$ .trim()似乎是一个更好的解决方案,因为它让你的脚本更简单一些. (3认同)

jru*_*ell 202

看起来IE中没有实现该功能.如果您正在使用jQuery,则可以使用$.trim()(http://api.jquery.com/jQuery.trim/).

  • 我同意.这就是为什么我说"如果你使用jQuery ......"=) (71认同)
  • 现在,我喜欢jQuery,但只是为.trim()导入它似乎有点矫枉过正 (17认同)
  • 请注意$ .trim()是来自$(<element> .val().trim()的差异 - 更多信息请访问:http://stackoverflow.com/questions/4315570/why-does-internet-explorer-not样,这-的jQuery (8认同)

小智 57

jQuery的:

$.trim( $("#mycomment").val() );
Run Code Online (Sandbox Code Playgroud)

有人使用,$("#mycomment").val().trim();但这不适用于IE.

  • @toha,跨浏览器是关于[jQuery](http://jquery.com/)的关键事项之一 (2认同)

Iai*_*ins 34

遗憾的是,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+$/,"");
}
Run Code Online (Sandbox Code Playgroud)


kai*_*ong 8

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

if ($(this).val().trim() == "")
Run Code Online (Sandbox Code Playgroud)

然而,这为IE6 - 8投入了一个扳手.令人讨厌的是,我试图将其变为如此:

   var originalValue = $(this).val();
Run Code Online (Sandbox Code Playgroud)

但是,使用jQuery的trim方法,适用于所有浏览器.

var originalValueTrimmed = $.trim($(this).val());              
            if (originalValueTrimmed  == "") { ... }
Run Code Online (Sandbox Code Playgroud)


shi*_*ail 5

我编写了一些代码来实现修剪功能.

LTRIM(左侧饰边):

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

RTRIM(右侧饰边):

function rtrim(s)
{
    var r=s.length -1;
    while(r > 0 && s[r] == ' ')
    {   r-=1;   }
    return s.substring(0, r+1);
 }
Run Code Online (Sandbox Code Playgroud)

TRIM(两边修剪):

function trim(s)
{
    return rtrim(ltrim(s));
}
Run Code Online (Sandbox Code Playgroud)

要么

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

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

有用的解释

  • 您的旧学校搜索和销毁代码不会处理`\ t`,`\ r`,`\n`等.只有'空间'.如果您不想真正投入手动处理所有内容,Regexp会更好. (3认同)