首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript按钮监听器触发一次?

Javascript按钮监听器触发一次?
EN

Stack Overflow用户
提问于 2011-05-12 09:22:43
回答 3查看 274关注 0票数 6

我正在为我正在制作的网站制作一个幻灯片类型的旋转器。旋转器本身运行良好,但我正在尝试使用键盘上的左/右键使幻灯片向前/向后滑动。我的代码是:

代码语言:javascript
复制
$(document).keydown(function(e){
    var currentPosition = 0;
    var slideWidth = 836;
    var slides = $('.slide');
    var numberOfSlides = slides.length;
    var animLength = 600;
    if (e.keyCode == 37) { 
          currentPosition = currentPosition-1;
            // Check to see if new position is unbounded, and wrap accordingly.
            checkForEnds(currentPosition);
            // Move slideInner using margin-left
            $('#slideInner').animate({
              'marginLeft' : slideWidth*(-currentPosition)
            }, animLength, 'easeOutExpo');
            animLength=600;
       return false;
    }
    /*Same code for right button, removed to save space.*/
    function checkForEnds(position){
    // If left is clicked on first slide, wrap to end.
    if(position==-1){currentPosition = numberOfSlides-1, animLength=1000}
    // If right is clicked on last slide, wrap to beginning.
    if(position==numberOfSlides){currentPosition = 0, animLength=1000}
  }
});

我的代码运行良好,但只运行一次。我可以向左或向右旋转一次,但这样做后,我不能重复使用相同的键,直到另一个键被按下。我对Javascript输入非常陌生,有什么简单的解决方法吗?

这是临时网站。它现在是一团糟,但我可以很好地处理所有奇怪的排序和布局问题。http://technoheads.org/test/ice/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-12 10:05:44

好了,我解决了这个问题。

这与绑定事件的事实无关;事件被正确触发,但用于计算位置的公式不正确。

您在块中定义了currentPosition变量;因此,每次使用触发器事件时都会定义该变量;因此,一旦触发事件,您将始终获得相同的值。

我解决这个问题的方法是将currentPosition移动到全局空间。

点击这里查看:http://jsfiddle.net/kuroir/SSd3r/

另外请注意,当你处理这类问题时,使用调试器是很重要的,我强烈建议你使用Google Chrome。

票数 5
EN

Stack Overflow用户

发布于 2011-05-12 09:49:35

每次触发快捷键事件时,无论您在幻灯片中的当前位置如何,您都在重新定义'currentPosition‘。虽然,这不是代码的唯一问题,但它将导致大量奇怪的行为。首先解决这个问题,然后从那里开始工作。Shawn是对的,使用调试器并设置断点。

票数 1
EN

Stack Overflow用户

发布于 2011-05-12 09:26:56

你知道如何使用调试器吗?在chrome中,按ctrl + shift +j并选择脚本选项卡。导航到您的代码并设置一堆断点。刷新页面...然后,您可以实时查看正在发生的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5972365

复制
相关文章

相似问题

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