2011-04-13 104 views
6
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(也可能是其他版本)中出现以下错误。IE错误,对象不支持此属性或方法

对象不支持此属性或方法。

是什么导致此错误的任何想法?

+1

“不,不是解决方案。谢谢” - 尝试评论一些东西,直到错误没有出现,并且将隔离调用它的语句。 – 2011-04-13 10:12:17

+0

@meder你是对的。我已经编辑了这个问题。问题在第5行(.length)。 – dubbelj 2011-04-13 10:21:08

回答

23

当你不使用var关键字时,IE浏览器在全局上下文中搜索messageLength,并且它发现它......你有具有该ID的元素。

尝试将数字分配给HTML元素失败。

为了解决这个问题,只是声明messageLength为局部变量:

var messageLength = messageVal.length; //IE WON'T BREAK HERE 
0

尝试哟取代:

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

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

希望它能帮助。

+0

不,不是解决方案。谢谢。 – dubbelj 2011-04-13 10:10:46

+0

尝试做一个typeof(messageVal) – alexl 2011-04-13 10:21:23

+0

奇怪它必须工作,你确定错误来自messageVal.length? – alexl 2011-04-13 10:48:19

0

我认为.change()在IE中有一些问题。请删除它,看看它是否工作。

也尝试使用.html()而不是.val()。

+0

不是,不是解决方案。谢谢。 – dubbelj 2011-04-13 10:10:22

0

看这里simple test。 textarea不支持value属性。你可以通过文本属性获得它

0

我有一个类似的错误,但是,那是因为我加入了jQuery库的母版页和有其他地方重复库声明相同的页面。

相关问题