【问题标题】:How can I change the var of a javascript function by pressing a key on the keyboard?如何通过按键盘上的键来更改 javascript 函数的 var?
【发布时间】:2015-04-17 09:03:59
【问题描述】:

我在这里有一段代码,我希望能够按下一个键(例如“1”键),所以 var isRunning = false。当我按下另一个键(例如“2”键)时,var isRunning 应该变回 isRunning = true。

它需要尽可能简单(javascript/html),不要使用 jquery。我只想用可定义的击键来改变这个 var 的值。

这是代码:

<script type="text/javascript">
var pages=[];
pages[0]="page0.html"
pages[1]="page1.html"
pages[2]="page2.html"

var time = 33000; 
var currentIndex = 0; 
var isRunning = true;

function pageChange() { 
    if(isRunning){
        if(currentIndex == 0){ 
            pages = shuffle(pages); 
            console.log(pages);
            currentIndex = pages.length; 
        }
        currentIndex--; 
        document.getElementById("frame").src=pages[currentIndex]; 
        console.log(currentIndex);
    }
    setTimeout(function() { pageChange(); }, time);
};

window.onload = function(){
    pageChange();
}


</script>

【问题讨论】:

  • 只要谷歌“javascript key events”,你会找到几十个解决方案
  • JQuery 是 javascript..
  • @greenhoorn 没有 JQuery 是一个 javascript 库
  • @rdans 这太迂腐了...
  • 好吧,我对此进行了相当多的搜索,但我找不到任何关于如何仅更改函数中的 var 而不是整个函数的内容。是的,我不喜欢使用 jquery 库。 :)

标签: javascript function var keystroke


【解决方案1】:

这应该可以解决问题;)

 document.addEventListener('keydown', function(event) {
        if(event.keyCode == 49) { //keycode 49 is '1'
            isRunning = false;
        }
        else if(event.keyCode == 50) { //keycode 50 is '2'
            isRunning = true;
        }
    });

【讨论】:

  • 这确实成功了!非常感谢。是否也可以仅使用“1”按钮将 var 连续从 true 更改为 false,再次更改为 true 等?
  • 当然可以,在if语句中使用isRunning = !isRunning,去掉else if语句
【解决方案2】:

由于您的isRunning 是在全局范围内,因此您可以捕获数字键的 keydown 事件。例如,如果您想在整个页面上捕获事件,请这样做:

window.onkeydown = function(e){
    switch(e.keyCode){
        case 49:
        case 97:
            isRunning = false;
            break;
        case 50:
        case 98:
            isRunning = true;
            break;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2017-06-11
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    相关资源
    最近更新 更多