.trim () en JavaScript ne fonctionne pas en IE

j'ai essayé d'appliquer .trim() à une chaîne dans un de mes programmes JavaScript. Il fonctionne très bien sous Mozilla, mais une erreur s'affiche quand je l'essaie dans IE8. Personne ne sait ce qui se passe ici? Y a-t-il un moyen de le faire marcher en IE?

code:

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

affichage d'erreur:

Message: Object doesn't support this property or method
Line: 604
Char: 2
Code: 0
URI: http://test.localhost/test.js
454
demandé sur Shog9 2010-02-22 03:37:53

14 réponses

ajouter le code suivant pour ajouter la fonctionnalité trim à la chaîne.

if(typeof String.prototype.trim !== 'function') {
  String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, ''); 
  }
}
765
répondu Ben Rowe 2010-07-26 06:58:43

on dirait que cette fonction n'est pas implémentée dans IE. Si vous utilisez jQuery, vous pouvez utiliser $.trim() à la place ( http://api.jquery.com/jQuery.trim / ).

201
répondu jrummell 2010-02-22 00:43:32

jQuery:

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

Quelqu'un utilise $("#mycomment").val().trim(); mais cela ne fonctionnera pas sur IE.

56
répondu Dan 2012-04-24 17:45:30

malheureusement, il n'y a pas de support JavaScript pour trim().

si vous n ' utilisez pas jQuery (qui a un .méthode trim ()) vous pouvez utiliser les méthodes suivantes pour ajouter le support trim aux chaînes:

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+$/,"");
}
32
répondu Iain Collins 2014-06-24 09:00:25

https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/String/Trim

c'est un ajout assez récent à javascript, et il n'est pas supporté par IE.

12
répondu Erik 2010-02-22 00:40:38

j'ai eu un problème similaire en essayant de couper une valeur à partir d'une entrée et ensuite demander si elle était égale à rien:

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

cependant cela a jeté une clé dans les travaux pour IE6 - 8. Assez fâcheusement, j'ai essayé de le var comme ça:

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

Cependant, en utilisant la méthode trim de jQuery, fonctionne parfaitement pour moi dans tous les navigateurs..

var originalValueTrimmed = $.trim($(this).val());              
            if (originalValueTrimmed  == "") { ... }
8
répondu kaichanvong 2018-05-23 23:09:27

j'ai écrit un code pour implémenter la fonctionnalité trim.

LTRIM (trim gauche):

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

RTRIM (trim à droite):

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

TRIM (couper les deux côtés):

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

OU

L'expression régulière est également disponible que nous pouvons utiliser.

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

Explication Utile

5
répondu shiv.mymail 2017-05-23 10:31:18

nous pouvons obtenir le code officiel sur internet! Reportez-vous ceci:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim

exécuter le code suivant avant tout autre code créera trim() s'il n'est pas nativement disponible.

if (!String.prototype.trim) {
  (function() {
    // Make sure we trim BOM and NBSP
    var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
    String.prototype.trim = function() {
      return this.replace(rtrim, '');
    };
  })();
}

pour plus: Je viens de découvrir qu'il y a un projet js pour soutenir EcmaScript 5: https://github.com/es-shims/es5-shim en lisant le code source, nous pouvons obtenir plus de connaissances sur la garniture.

defineProperties(StringPrototype, {
 // http://blog.stevenlevithan.com/archives/faster-trim-javascript
 // http://perfectionkills.com/whitespace-deviations/
  trim: function trim() {
    if (typeof this === 'undefined' || this === null) {
      throw new TypeError("can't convert " + this + ' to object');
    }
    return String(this).replace(trimBeginRegexp, '').replace(trimEndRegexp, '');
  }
}, hasTrimWhitespaceBug);
4
répondu Will V King 2015-03-13 07:10:39

Je ne pense pas qu'il y ait une méthode native trim() dans le standard JavaScript. Peut-être que Mozilla en fournit un, mais si vous en voulez un dans IE, vous aurez besoin de l'écrire vous-même. Il y a quelques versions sur cette page .

3
répondu JW. 2012-04-24 17:45:58

j'ai eu le même problème en IE9 Cependant, lorsque j'ai déclaré la version html supportée avec la balise suivante sur la première ligne avant le

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

le problème est résolu.

3
répondu Mark 2014-01-14 03:51:19
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);
}
0
répondu Dhaval dave 2012-03-20 18:04:21

vient de découvrir QU'IE ne supporte plus trim() , probablement après une récente mise à jour de windows. Si vous utilisez dojo , vous pouvez utiliser dojo.string.trim() , il fonctionne plate-forme transversale.

0
répondu David Zhao 2012-04-24 17:46:18

ce problème peut être causé par IE en utilisant le mode de compatibilité sur les sites intranet. Il y a deux façons de résoudre cela, vous pouvez soit mettre à jour IE pour ne pas utiliser le mode de compatibilité sur votre machine locale (dans IE11: Outils-> Paramètres de vue de compatibilité -> Uncheck Display intranet sites en vue de compatibilité)

Mieux encore, vous pouvez mettre à jour les balises meta dans votre page web. Ajouter comme suit:

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

Qu'est-ce que cela signifie? Il dit à IE d'utiliser la dernière le mode de compatibilité. De plus amples informations sont disponibles dans MSDN: spécifier les modes de documents

0
répondu FuzzyJulz 2015-12-17 01:14:55

c'est à cause d'une erreur de typographie getElementBy ID . Changer pour getElementById

0
répondu Aswathy 2017-03-23 14:21:26