问答详情
源自:1-3 实例JS+DOM

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

<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>

提问者:九方名座 2016-11-13 00:52

个回答

  • yuyu391
    2016-11-13 13:21:28

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


  • yuyu391
    2016-11-13 12:46:31


    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>

    也没有 冒号

  • DD慕帆
    2016-11-13 12:17:42

    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);

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