Что такое эквивалентный код в Node?.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

Добавьте следующий код, чтобы добавить функциональность обрезки в строку.

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/ ).

jQuery:

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

выражения значений по умолчанию $("#mycomment").val().trim();, но это не сработает в IE. К сожалению, JavaScript не поддерживает кросс-браузерную функцию trim ().

Если вы не используете 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 $/,"");
}

Однако это бросило гаечный ключ в работах для IE6 — 8. Достаточно досадно, но я попытался изменить его вот так:

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

Однако, используя метод обрезки jQuery, он отлично работает для меня во всех браузерах.

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

LTRIM

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

Https://github.com/tc39/proposal-optional-chai ning

(обрезка влево): RTRIM

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

Мы можем получить официальный код из Интернета! Перейдите по ссылке:

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

Выполнение следующего кода перед любым другим ode создаст trim (), если она не доступна изначально.

для получения дополнительной информации: я только что обнаружил, что существует проект js для поддержки EcmaScript 5:

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

https://github.com/es-shims/es5-shim читая исходный код, мы можем получить больше знаний об отделке. Я не думаю, что есть туземец

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

Я не думаю, что в стандарте JavaScript есть нативный trim() метод. Может быть, Mozilla поставляет один, но если вы хотите один в IE, вам нужно написать его самостоятельно. Есть несколько версий для эту страницу Глядя на вывод

У меня была такая же проблема в IE9. Однако, когда я объявил поддерживаемую версию html со следующим тегом в первой строке перед тем, как

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

проблема была решена.

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

Только что обнаружил, что IE перестает поддерживать trim(), возможно, после недавнего обновления Windows. Если вы используете dojo, вы можете использовать dojo.string.trim(), он работает кроссплатформенно.

Эта проблема может быть вызвана тем, что IE использует режим совместимости на сайтах интрасети. Есть два способа решения этой проблемы: вы можете либо обновить IE, чтобы не использовать режим совместимости на локальном компьютере (в IE11: Сервис — & Gt ; Настройки просмотра совместимости — & Gt ; Снимите флажок Отображать сайты интрасети в представлении совместимости)

Еще лучше, если вы обновите метатеги на своей веб-странице. Добавить в:

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

Что это значит? Это говорит IE, чтобы использовать последний режим совместимости. Дополнительная информация доступна в MSDN: Указание устаревших режимов документов

Это из-за ошибки опечатки getElementBy , просто нажмите кнопку «Получить токен»: . Измените его на getElementById