IE错误,对象不支持此属性或方法。

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(可能也适用于其他版本)中,出现以下错误:

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

对于导致此错误的原因有任何想法吗?


1
不,这不是解决方案。谢谢。 - 尝试注释掉一些代码直到错误不再出现,这样就可以隔离调用此错误的语句了。 - meder omuraliev
@meder 你说得完全正确。我已经编辑了问题。问题出在第5行(.length)。 - dubbelj
5个回答

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

希望这能有所帮助。

不是解决方案。谢谢。 - dubbelj
尝试执行 typeof(messageVal)。 - alexl
奇怪,这应该可以工作的。你确定错误是来自 messageVal.length 吗? - alexl

0

我曾经遇到过类似的错误,但是那是因为我在母版页中添加了JQuery库,而同一页面其他地方也有重复的库声明。


0

我认为在IE中.change()存在一些问题。请将其删除并查看是否正常工作。

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


不是解决方案。谢谢。 - dubbelj

0

看这里 简单测试。textarea 不支持 value 属性,你可以通过 text 属性获取它


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接