求助这个javascript的问题

alleni123 2012-12-14 03:35:18
for(var i=0;i<sDiv.length;i++){
alert(i);

sDiv[i].onmouseover=function(){

Content_Div[i].style.display="block";

}


我想把for循环里面的那个i传递到Content_Div[i]里面的这个i,

但是这样子好像传递不进去。。。

求解答。。
...全文
291 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
for(var i=0;i<sDiv.length;i++){ alert(i); sDiv[i].onmouseover=function(j){ return function() { Content_Div[j].style.display="block"; } }(i);
Kilin_Zhang 2012-12-26
  • 打赏
  • 举报
回复
看明白楼主的意思了

for(var i=0;i<sDiv.length;i++){
alert(i);
 sDiv[i]["cacheData"] = i;
sDiv[i].onmouseover=function(){
 var _tmp = this["cacheData"];
Content_Div[_tmp].style.display="block";
 
}
ILOVE_ASPNET 2012-12-15
  • 打赏
  • 举报
回复

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="Scripts/jquery-1.8.3.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $("img:gt(0)").hide();
        });
        function showImage(imgID) {
            $("img").each(function () {
                if ($(this).attr("id") == imgID) {
                    $(this).show();
                } else {
                    $(this).hide();
                }
            });
        }
    </script>
</head>
<body>
    <img src="images/icon-phone.gif" id="img1" />
    <img src="images/close.gif" id="img2" />
    <img src="images/data-table-th.gif" id="img3" />
    <img src="images/icon-mail.gif" id="img4" />
    <span onmousemove="showImage('img1')">第1张</span> <span onmousemove="showImage('img2')">
        第2张</span> <span onmousemove="showImage('img3')">第3张</span> <span onmousemove="showImage('img4')">
            第4张</span>
</body>
</html>

不知道是不是你想要的效果
ILOVE_ASPNET 2012-12-15
  • 打赏
  • 举报
回复
我好像没看明白意思
plzzz 2012-12-14
  • 打赏
  • 举报
回复
如果你的方法是那样绑定的,那么直接 this.style.display="block"
likeajin 2012-12-14
  • 打赏
  • 举报
回复
鼠标滑过导致的样式变化建议用CSS伪类,除非浏览器不支持,比如IE6下。
未知数 2012-12-14
  • 打赏
  • 举报
回复
不用闭包的方式,用对象传递,好理解: for(var i=0;i<sDiv.length;i++){ alert(i); sDiv[i].index=i; sDiv[i].onmouseover=function(){ Content_Div[this.index].style.display="block"; }
wd358851347 2012-12-14
  • 打赏
  • 举报
回复
楼上正解+1
scscms太阳光 2012-12-14
  • 打赏
  • 举报
回复
for(var i=0;i<sDiv.length;i++){ alert(i); sDiv[i].onmouseover=(function(e){ return function(){ Content_Div[e].style.display="block";//引用闭包原理,传入变量i给e } })(i) }
likeajin 2012-12-14
  • 打赏
  • 举报
回复

for(var i=0;i<sDiv.length;i++){
    sDiv[i].onmouseover=function(x){
        return function(){Content_Div[x].style.display="block"}
    }(i)
}
1.这是循环和事件函数触发不一致(或者不同时)导致的。 2.可以简单地理解为当触发mouseover事件时,循环中的i已经改变了,至少变为sDiv.length-1。 3.而mouseover事件函数中用的i依然是外层for循环中的i函数中的i,实际上是外层函数(for所在函数中的i,代码块没有作用域)。 4.解决办法:闭包。 再试试下面这段代码:

for(var i=0;i<sDiv.length;i++){
    sDiv[i].onmouseover=function(){
        alert(i);
        //Content_Div[i].style.display="block";
    }
}
i=1000;//假如最后一次修改i是这里。
jeff_jiang 2012-12-14
  • 打赏
  • 举报
回复
可以取到,检查一下别的地方吧
rayaspnet 2012-12-14
  • 打赏
  • 举报
回复
引用 楼主 alleni123 的回复:
JavaScript code?12345678for(var i=0;i<sDiv.length;i++){alert(i); sDiv[i].onmouseover=function(){ Content_Div[i].style.display="block"; } 我想把for循环里面的那个i传递到Content_Div[i]里面的这个i, 但是这样子……
能传进去,这是javascript的闭包。 你查查其他的原因吧。 例子:
function foo(x) {
  var tmp = 3;
  function bar(y) {
    alert(x + y + (++tmp));
  }
  bar(10);
}
foo(2)​

87,904

社区成员

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

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