IE ошибка, объект не поддерживает это свойство или метод - PullRequest
6 голосов
/ 13 апреля 2011
 function charCount(){
  $.doTimeout('poll', 150, function(){
      messageVal = $('#messageLabel textarea').val();

      messageLength = messageVal.length; //IE BREAKS HERE

      $('#messageLength').html(messageLength + '/140')
      if(messageLength > 140){
          $('#messageLength').not('.inv').addClass('inv')
      }else{
          $('#messageLength.inv').removeClass('inv')
      }
      return false;
  })

}
$('#messageLabel textarea').change(charCount).keyup(charCount);

Выдает следующую ошибку в Internet Explorer 7.0 (и, возможно, в других версиях).

Объект не поддерживает это свойство или метод.

Любые идеи о том, что вызывает эту ошибку?

Ответы [ 5 ]

23 голосов
/ 13 апреля 2011

Если вы не используете ключевое слово var, браузер IE ищет в глобальном контексте messageLength и находит его ... у вас есть элемент с этим идентификатором.

Попытка присвоить номерэлементу HTML не удается.

Чтобы решить эту проблему, просто объявите messageLength в качестве локальной переменной:

var messageLength = messageVal.length; //IE WON'T BREAK HERE
0 голосов
/ 25 марта 2015

У меня была похожая ошибка, однако это произошло потому, что я добавил библиотеку JQuery на главную страницу, а в другом месте этой же страницы было дублированное объявление библиотеки.

0 голосов
/ 13 апреля 2011

Я думаю, что .change () имеет некоторые проблемы в IE. Пожалуйста, удалите его и посмотрите, работает ли он.

Также попробуйте использовать .html () вместо .val ().

0 голосов
/ 13 апреля 2011

посмотрите здесь простой тест . textarea не поддерживает свойство value. вы можете получить его через свойство text

0 голосов
/ 13 апреля 2011

Попробуйте заменить:

messageVal = $('#messageLabel textarea').val();

на

messageVal = $('#messageLabel textarea').text();

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...