首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyPress水平导航

KeyPress水平导航
EN

Stack Overflow用户
提问于 2015-10-10 13:05:42
回答 1查看 37关注 0票数 3

我试图使用左右箭头水平浏览我的网页。

由于Firefox/Chrome以不同的方式处理默认箭头移动,所以我不得不禁用默认移动(Firefox会将其移动到20 to过右)。

代码语言:javascript
复制
<script>
 window.addEventListener("keydown", function(e) {
// space and arrow keys
    if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
        e.preventDefault();
     }
}, false);  
</script>

然后,我有了一个按键函数,可以在按键上左右移动1980 on。(我无法让按键工作,因为阻塞了默认的移动)

代码语言:javascript
复制
<script>
    $(window).keydown(function (e) {
    var currentx = 0;
    var viewport = 1920;
    var btnright = (+currentx) + (+viewport);
    var btnleft = (+currentx) - (-viewport);

if ( e.which == 37 ) {
    window.scrollTo(btnleft, 0);
    currentx = (+currentx) - (-viewport);
} else if ( e.which == 39 ) {
    window.scrollTo(btnright, 0);
    currentx = (+currentx) + (+viewport);
}
});
</script>

我希望它是反复出现的(页面宽6000 at ),但我想一次移动一个面板(1980px) (每次移动后更新$Current )。最后,我可以通过箭头浏览整个页面。

我的问题是,我不能让事件触发不止一次,我只能导航从0到1980年。不会再继续下去了。有解决办法吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-10 13:40:56

正如@CBroe所述,每次触发事件时,都会将currentx变量设置为0。尝试将currentx变量声明移出事件处理程序,如下所示:

代码语言:javascript
复制
<script>
    var currentx = 0,
        viewport = 1920;
    $(window).keydown(function (e) {
        var btnright = (+currentx) + (+viewport),
            btnleft = (+currentx) - (-viewport);
        if ( e.which == 37 ) {
            window.scrollTo(btnleft, 0);
            currentx = (+currentx) - (-viewport);
        } else if ( e.which == 39 ) {
            window.scrollTo(btnright, 0);
            currentx = (+currentx) + (+viewport);
        }
    });
</script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33054319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档