我有这个全局变量,它用作我想在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();
});
请帮忙。 谢谢 稻谷
答案 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)
因为你再次定义var i:
var i = i - 1;
答案 2 :(得分:0)
您需要在;
var i = 0
答案 3 :(得分:0)
如果您使用var
,则不是全局变量。当声明它时,变量仅限于它包含的函数。要么将声明移动到函数中,要么不要使用术语var
修改强>
请查看this site了解详情。这就是您现在遇到的问题的原因。一旦你纠正了这一点,你应该考虑其他评论中的建议,因为这些也会成为问题