imgs[j].style.left 中值的問題,按循環來算,imgs[1].style.left=exposeWidth,并不是圖片的寬度啊
主程序部分,還是用老師的, 大家可以參考
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;才是正確的???
我的理解哪里有問題?
2016-11-30
我把老師程序中的imgs[j].style.left = parseInt(imgs[j].style.left, 10) - translate + 'px'; 改為
imgs[j].style.left = exposeWidth+ 'px';
居然在圖1和圖2上onmouseover效果也是正常的, 怎么會這樣?