jquery 的计数问题?

changxiang 2011-05-18 02:00:33
<script src="http://gongyi.sinaimg.cn/js/jq.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
for (var i = 1; i <= 6; i++) {
$("#position" + i).mouseover(function () {
for (var j = 1; j <= 6; j++) {
alert(i+"___"+j); //这一行的i 怎么从7开始啊???????
if (i === j) {

$("#cr-item-" + j).removeClass("hide");
} else {
$("#cr-item-" + j).addClass("hide");
}
}
}).mouseout(function () {
$(this).css("background-color", "#ffffff");
});
}

});
</script>
<div id="position1">1</div>
<div id="position2">2</div>
<div id="position3">3</div>
<div id="position4">4</div>
<div id="position5">5</div>
<div id="position6">6</div>
<div>

<div id="cr-item-1">c1</div>
<div id="cr-item-2">c2</div>
<div id="cr-item-3">c3</div>
<div id="cr-item-4">c4</div>
<div id="cr-item-5">c5</div>
<div id="cr-item-6">c6</div>

</div>
以上代码,不知为何Alert出来的结果中 i 从7 开始计数,奇怪啊,这是怎么回事

...全文
169 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2011-05-18
  • 打赏
  • 举报
回复
按照上面的方法,可以这样
  $(function () {
for (var i = 1; i <= 6; i++) {
$("#position" + i).bind("mouseover", { '$i': i }, function (event) {
for (var j = 1; j <= 6; j++) {
alert(event.data['$i'] + "___" + j); //这一行的i 怎么从7开始啊???????
if (event.data['$i'] === j) {
$("#cr-item-" + j).removeClass("hide");
} else {
$("#cr-item-" + j).addClass("hide");
}
}
});


$("#position" + i).mouseout(function () {
$(this).css("background-color", "#ffffff");
});
}
}

);
孟子E章 2011-05-18
  • 打赏
  • 举报
回复
这是闭包问题,可以看
http://topic.csdn.net/u/20110511/14/4a18187e-279e-407e-857f-6855d17aa824.html
changxiang 2011-05-18
  • 打赏
  • 举报
回复
谢谢net_lover:
要实现从1开始计数,如何改进这个程序?
孟子E章 2011-05-18
  • 打赏
  • 举报
回复
不奇怪啊
因为你执行mouseover的时候
for (var i = 1; i <= 6; i++)
已经执行完毕了。最后设置的i++的值7

52,782

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧