imgs[j].style.left 中值的问题,按循环来算,imgs[1].style.left=exposeWidth,并不是图片的宽度啊

来源:1-3 实例JS+DOM

rainy_li3676598

2016-11-30 15:46

主程序部分,还是用老师的, 大家可以参考

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

当i=0的时候, 也就是鼠标放到第一张图片上,

imgs[j].style.left = parseInt(imgs[j].style.left, 10) - translate + 'px';

这里的imgs[1].style.left在setImgsPos();中计算的应该是 imgs[1].style.left=imgWidth;

然后执行parseInt(imgs[j].style.left, 10) - translate + 'px';

前面已经定了 translate = imgWidth - exposeWidth;

所以应该是:

imgs[1].style.left=imgWidth-(imgWidth-exposeWidth)

这样的话, imgs[1].style.left=exposeWidth

这样的话 ,就应该不是这个效果, 因为 imgs[1].style.left=imgWidth;才是正确的啊?

我的理解哪里有问题?

写回答 关注

1回答

  • rainy_li3676598
    2016-11-30 15:49:14

    我把老师程序中的imgs[j].style.left = parseInt(imgs[j].style.left, 10) - translate + 'px'; 改为

    imgs[j].style.left = exposeWidth+ 'px';

    居然在图1和图2上onmouseover效果也是正常的, 怎么会这样?

DOM探索之基础详解篇

要知道前端大牛都是从精通DOM开始的,全面讲解DOM的基础知识

98374 学习 · 238 问题

查看课程

相似问题