看到一个js鼠标滚动图片切换的dome,在Firefox上正常,别的浏览器就跳着切换。
高洛峰
高洛峰 2016-10-27 17:12:08
[HTML讨论组]

如题,最近学习鼠标滚动事件,这是在网上看到的dome,想了很久都没想到那出问题了,特来请教。代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
<title>鼠标通过滚动滚轮切换图片</title>  
<style>  
#picBox{  
    width:800px;height:600px;  
    margin:70px auto;  
    }  
</style>  
<script>  
    var nowPic=1;  
    function MouseWheel(e){  
        var pic;  
        e=e||window.event;  
        for(i=1;i<4;i++){  
            if(i==nowPic){  
                if(e.wheelDelta){//IE  
                    pic=document.getElementById("pic"+i);  
                    pic.style.display="block";  
                }
                else if(e.detail){//Firefox  
                    pic=document.getElementById("pic"+i);  
                    pic.style.display="block";  
                }  
                }else{  
                    pic=document.getElementById("pic"+i);  
                    pic.style.display="none";     
                }  
            }     
            if(nowPic>=3){  
                nowPic=1;  
            }else{  
                nowPic++;  
            }  
        }  
    /*Firefox注册事件*/  
    if(document.addEventListener){  
        document.addEventListener("DOMMouseScroll",MouseWheel,false);  
    }  
    window.onmousewheel=document.onmousewheel=MouseWheel;//IE/Opera/Chrome  
</script>  
</head>  
  
<body>  
    <h3>鼠标通过滚动滚轮切换图片</h3>  
    <div id="picBox">  
        <img src="http://picm.bbzhi.com/dongwubizhi/dongwuheji/dongwuheji_69803_m.jpg" width="800px" height="600px" id="pic1">  
        <span style="white-space:pre"></span>
        <img src="http://pic1a.nipic.com/2008-12-22/2008122204359187_2.jpg" width="800px" height="600px" id="pic2" style="display:none;">  
        <span style="white-space:pre"></span>
        <img src="http://imgphoto.gmw.cn/attachement/jpg/site2/20121221/002564a60ce4123e17614e.jpg" width="800px" height="600px" id="pic3" style="display:none;">  
    </div>  
</body>  
</html>


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
三叔

我自己把代码测了一下,通过 debug 发现,MouseWheel 函数执行了两次,然后再往下看,你的这段代码

window.onmousewheel=document.onmousewheel=MouseWheel;//IE/Opera/Chrome

既给 window 又给 document 的 onmousewheel 对象赋值,你这样子应该是为了实现兼容性吧,但是这么做会造成

1.png

当你每次滑动滚轮的时候,window 执行一次 MouseWheel 函数,document 又执行一次(我在 chrome 下测试时这样的),所以导致你的图片会跳播。

window.onmousewheel=MouseWheel;//IE/Opera/Chrome

把 document 的删掉,目前我自己测试,兼容 chrome 和 Firefox 和 IE 高版本,播放正常,但这个时候会出现一个 bug ,就是当你第一次滚动滑轮,会没有效果,原因是 你的 nowPic 的初值是 1,设置成 2 就正常了。

var nowPic = 2;

至于其他兼容性就不知道了。OooO

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号