为了账号安全,请及时绑定邮箱和手机立即绑定

求助!这段代码哪里错了啊?大神指点迷津

<script>
    window.onload=function(){
        var box=document.getElementsByTagName("div");
        var imgs=box.getElementsByTagName("img");
        var imgWidth=imgs[0].offsetWidth;
        var exposedWidth=300;
        var boxWidth=imgWidth+exposedWidth*(imgs.length-1);
        box.style.width=boxWidth+"px";
        function setImgsPos(){
            for(var i=1,len=imgs.length;i<len;i++){
                imgs[i].style.left=imgWidth+exposedWidth*(i-1)+"px";
            };
        }
        setImgsPos();
        var translate=imgWidth-exposedWidth;
        for(var i=0,len=imgs.length;i<len;i++){
            (function(i){
                imgs[i].onmouseover=function(){
                    setImgsPos();
                    for(var j=1,j<=i;j++){
                        imgs[j].style.left=parseInt(imgs[j].style.left,10)-translate+"px";
                    };
                };
            }(i));
        };
    };
    </script>

正在回答

3 回答

不是冒号,是分号。;;;;;;;;;;;;;;


0 回复 有任何疑惑可以回复我~
#1

九方名座 提问者

是的,被你带沟里了。。。
2016-11-13 回复 有任何疑惑可以回复我~
#2

yuyu391 回复 九方名座 提问者

嗯,我把分号 当成 冒号了。 还不如直接打;;;;;;;;;;;;;
2016-11-13 回复 有任何疑惑可以回复我~


for(var i=1,len=imgs.length;i<len;i++){
                imgs[i].style.left=imgWidth+exposedWidth*(i-1)+"px";
            };

后面没有冒号

for (var i = 0, len = imgs.length; i < len; i++) {
		//使用立即调用的函数表答式,为了获得不同的i值
		(function(i) {
			imgs[i].onmouseover = function() {
				//先将每道门复位
				setImgsPos();
				//打开门
				for (var j = 1; j <= i; j++) {
					imgs[j].style.left = parseInt(imgs[j].style.left, 10) - translate + 'px';
				}
			};
		})(i);
	}

冒号 有无 自己对应的看下

最后的

  };
    </script>

也没有 冒号

0 回复 有任何疑惑可以回复我~
#1

九方名座 提问者

冒号没有影响的
2016-11-13 回复 有任何疑惑可以回复我~
#2

九方名座 提问者 回复 九方名座 提问者

有分号规范一点
2016-11-13 回复 有任何疑惑可以回复我~

1.花括号后面不要加分号

2.第三个for循环的条件写错了,var j=1后面应该改为分号,应该这样写为for(var j=1;j<=i;j++)

3.开头和结尾的<script></script>不要

4.还有你没写,图片的初始位置,还有移动的距离

 5.var box=document.getElementsByTagName("div");改为,是获取id

var box = document.getElementById('div');

6.第三个for循环

for(var j=1;j<=i;j++){
   imgs[j].style.left=parseInt(imgs[j].style.left,10)-translate+"px";
}

执行语句里的imgs[j]改为imgs[i],如下

for(var j=1;j<=i;j++){
   imgs[j].style.left=parseInt(imgs[i].style.left,10)-translate+"px";
}

7.最后的(i),放在括号之外--->)(i);

我也不知道说什么,加油!

0 回复 有任何疑惑可以回复我~
#1

九方名座 提问者

除了第二点其他的并不是错误,改为分号后还是没能解决问题,共勉!
2016-11-13 回复 有任何疑惑可以回复我~
#2

DD慕帆 回复 九方名座 提问者

但是我把你的代码,改了,可以运行
2016-11-13 回复 有任何疑惑可以回复我~
#3

九方名座 提问者 回复 DD慕帆

改了哪些?
2016-11-13 回复 有任何疑惑可以回复我~
#4

DD慕帆 回复 九方名座 提问者

说的那些
2016-11-13 回复 有任何疑惑可以回复我~
#5

九方名座 提问者 回复 DD慕帆

你把本来对的都改错了能运行?
2016-11-13 回复 有任何疑惑可以回复我~
#6

DD慕帆

首先,你只是贴出了代码的一部分,你确定你其他的都写对? 还有我第一次知道循环语句花括号后面要加;
2016-11-13 回复 有任何疑惑可以回复我~
查看3条回复

举报

0/150
提交
取消

求助!这段代码哪里错了啊?大神指点迷津

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信