#javascript #jquery #internet-explorer
#javascript #jquery #internet-explorer
Вопрос:
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 (и, возможно, в других версиях тоже).
Объект не поддерживает это свойство или метод.
Есть идеи о том, что вызывает эту ошибку?
Комментарии:
1. «Нет, не решение. Спасибо» — Попробуйте закомментировать материал, пока ошибка не исчезнет, и это изолирует оператор, который вызывает это.
2. @meder Ты абсолютно прав. Я уже отредактировал вопрос, хотя. Проблема в строке 5 (.length).
Ответ №1:
Когда вы не используете var
ключевое слово, браузер IE выполняет поиск messageLength
в глобальном контексте и находит его… у вас есть элемент с этим идентификатором.
Попытка присвоить номер элементу HTML завершается неудачей.
Чтобы решить эту проблему, просто объявите messageLength
как локальную переменную:
var messageLength = messageVal.length; //IE WON'T BREAK HERE
Ответ №2:
Попробуйте заменить :
messageVal = $('#messageLabel textarea').val();
с
messageVal = $('#messageLabel textarea').text();
Надеюсь, это поможет.
Комментарии:
1. Нет, не решение. Спасибо.
2. попробуйте выполнить typeof(messageVal)
3. странно, что это должно работать, вы уверены, что ошибка исходит из messageVal.length?
Ответ №3:
Я думаю, что у .change () возникла какая-то проблема в IE.Пожалуйста, удалите его и посмотрите, работает ли он.
Также попробуйте использовать .html () вместо .val().
Комментарии:
1. Нет, не решение. Спасибо.
Ответ №4:
посмотрите здесь простой тест. textarea не поддерживает свойство value. вы можете получить его через свойство text
Ответ №5:
Однако у меня была похожая ошибка, вызванная тем, что я добавил библиотеку jQuery на главную страницу, и в другом месте на той же странице было дублированное объявление библиотеки.