469 Stimmen

.trim() in JavaScript funktioniert nicht im IE

Ich habe versucht, die .trim() zu einer Zeichenkette in einem meiner JavaScript-Programme. Unter Mozilla funktioniert es gut, aber wenn ich es im IE8 versuche, wird ein Fehler angezeigt. Weiß jemand, was hier los ist? Gibt es irgendeine Möglichkeit, es im IE zum Laufen zu bringen?

Code:

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

Fehleranzeige:

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

8voto

kaichanvong Punkte 381

Ich hatte ein ähnliches Problem, als ich versuchte, einen Wert aus einer Eingabe abzuschneiden und dann zu fragen, ob er gleich Null ist:

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

Für IE6 - 8 hat dies jedoch einen Strich durch die Rechnung gemacht. Ärgerlicherweise hatte ich versucht, es so zu ändern:

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

Jedoch mit jQuery's trim Methode, funktioniert perfekt für mich in allen Browsern.

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

5voto

shiv.mymail Punkte 1219

Ich habe etwas Code geschrieben, um die Trimmfunktion zu implementieren.

LTRIM (links im Bild):

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

RTRIM (rechts im Bild):

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

TRIM (beide Seiten beschneiden):

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

OR

Es gibt auch reguläre Ausdrücke, die wir verwenden können.

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

Nützliche Erläuterung

4voto

Will V King Punkte 131

Wir können offiziellen Code aus dem Internet bekommen! Siehe dies:

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

Wenn der folgende Code vor einem anderen Code ausgeführt wird, wird trim() erzeugt, wenn es nicht von Haus aus verfügbar ist.

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, '');
    };
  })();
}

für mehr: Ich habe gerade herausgefunden, dass es ein js-Projekt zur Unterstützung von EcmaScript 5 gibt: https://github.com/es-shims/es5-shim Wenn wir den Quellcode lesen, können wir mehr über Trim erfahren.

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

3voto

JW. Punkte 48942

Ich glaube nicht, dass es einen einheimischen trim() Methode im JavaScript-Standard. Vielleicht bietet Mozilla eine an, aber wenn Sie eine im IE haben wollen, müssen Sie sie selbst schreiben. Es gibt ein paar Versionen auf diese Seite .

3voto

Mark Punkte 152

Ich hatte das gleiche Problem im IE9 Wenn ich jedoch die unterstützte HTML-Version mit dem folgenden Tag in der ersten Zeile vor der

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

Das Problem wurde behoben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X