全局变量抛出悬停功能中的“未定义”错误

时间:2010-12-23 08:34:28

标签: jquery

我有这个全局变量,它用作我想在jquery悬停函数中访问的计数器。但是当我尝试在悬停函数中访问变量时,变量如何抛出“未定义”错误。代码是

var i = 0

$('#ticker-area').hover(function() {
    alert(i); //THROWS UNDEFINED ERROR  
    clearTimeout(t1);   
    if (i > 0) {  
        alert(i); //NEVER REACHES HERE  
        var i = i - 1;  
        var innerText = tickerItems[i];  
        i++;  
    }  
    $('#ticker-area').html(innerText);  
}, function() {  
    clearTimeout(t1);  
    rotateTicker();  
});  

请帮忙。 谢谢 稻谷

4 个答案:

答案 0 :(得分:3)

如果您不熟悉javascript,请始终使用http://www.jslint.com/检查您的代码。

检查您的代码我收到以下错误:

Problem at line 1 character 10: Missing semicolon.

var i = 0

Problem at line 8 character 15: 'i' is already defined.

var i = i - 1;

Problem at line 12 character 28: 'innerText' used out of scope.

$('#ticker-area').html(innerText); 

所以

  1. 在第1行添加分号
  2. 删除第8行中的var声明
  3. 将var innerText声明放在开头,使其可见

答案 1 :(得分:1)

因为你再次定义var i:

var i = i - 1;

答案 2 :(得分:0)

您需要在;

行的末尾添加var i = 0

答案 3 :(得分:0)

如果您使用var,则不是全局变量。当声明它时,变量仅限于它包含的函数。要么将声明移动到函数中,要么不要使用术语var

修改

请查看this site了解详情。这就是您现在遇到的问题的原因。一旦你纠正了这一点,你应该考虑其他评论中的建议,因为这些也会成为问题