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;才是正确的啊?
我的理解哪里有问题?
我把老师程序中的imgs[j].style.left = parseInt(imgs[j].style.left, 10) - translate + 'px'; 改为
imgs[j].style.left = exposeWidth+ 'px';
居然在图1和图2上onmouseover效果也是正常的, 怎么会这样?
DOM探索之基础详解篇
98372 学习 · 238 问题
相似问题