Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在每个按键上更改单词javascript/jquery_Javascript_Jquery_Keypress - Fatal编程技术网

在每个按键上更改单词javascript/jquery

在每个按键上更改单词javascript/jquery,javascript,jquery,keypress,Javascript,Jquery,Keypress,我是javascript/jquery新手,遇到以下问题: 我想在按下“a”或“l”时更改HTML段落元素“abc”的值 代码可以工作,但只执行一次。我的目标是改变“abc”元素,比如说,20次,每次从“newwords”中选择一个元素 也许我忘了在什么地方打圈了 html: 如果您打算使用Jquery,请坚持使用它。容易多了 $("#abc").text(rand_new); 如果您打算使用Jquery,请坚持使用它。容易多了 $("#abc").text(rand_new); 因此,您可

我是javascript/jquery新手,遇到以下问题:

我想在按下“a”或“l”时更改HTML段落元素“abc”的值

代码可以工作,但只执行一次。我的目标是改变“abc”元素,比如说,20次,每次从“newwords”中选择一个元素

也许我忘了在什么地方打圈了

html:


如果您打算使用Jquery,请坚持使用它。容易多了

$("#abc").text(rand_new);

如果您打算使用Jquery,请坚持使用它。容易多了

$("#abc").text(rand_new);

因此,您可以检查按键是否为
'a'
'i'
,如果是,则将
#abc
容器中的文本设置为
rand\u new
中的值。它实际上每次都在工作,但是,
rand_new
的值没有改变,因为它只设置了一次。每次按下
a
i
时,您需要设置
rand\u new
。因此,只要做一个简单的更改,您就可以:

...
if (e.which === 97 || e.which === 108) {
    rand_new = newwords[Math.floor(Math.random() * newwords.length)];
    $("#abc").text(rand_new);
};
...

这样,您每次都会更新值。

因此,您可以检查按键是否为
'a'
'i'
,如果是,则将
\abc
容器中的文本设置为
rand\u new
中的值。它实际上每次都在工作,但是,
rand_new
的值没有改变,因为它只设置了一次。每次按下
a
i
时,您需要设置
rand\u new
。因此,只要做一个简单的更改,您就可以:

...
if (e.which === 97 || e.which === 108) {
    rand_new = newwords[Math.floor(Math.random() * newwords.length)];
    $("#abc").text(rand_new);
};
...

这样,您每次都在更新值。

并不是您的代码只工作一次,您的问题是您只生成一次随机数,所以您总是得到相同的结果。将数字生成移动到函数中,它就会工作:

var newwords = ["NEWWORD1", "NEWWORD2", "NEWWORD3"];

$(document).keypress(function(e){
    if ($(e.target).is('input, textarea')) {
        return;
    };
    var rand_new = newwords[Math.floor(Math.random() * newwords.length)];
    if (e.which === 97 || e.which === 108) {
        document.getElementById("abc").firstChild.nodeValue = rand_new;
    };    
});

jsfdle:

不是因为代码只工作一次,而是因为您只生成一次随机数,所以总是得到相同的结果。将数字生成移动到函数中,它就会工作:

var newwords = ["NEWWORD1", "NEWWORD2", "NEWWORD3"];

$(document).keypress(function(e){
    if ($(e.target).is('input, textarea')) {
        return;
    };
    var rand_new = newwords[Math.floor(Math.random() * newwords.length)];
    if (e.which === 97 || e.which === 108) {
        document.getElementById("abc").firstChild.nodeValue = rand_new;
    };    
});

jsiddle:

您只在第一次加载时生成随机字-将其转换为函数,它应该可以工作:

var newwords = ["NEWWORD1", "NEWWORD2", "NEWWORD3"];
function rand_new() {
    return newwords[Math.floor(Math.random() * newwords.length)];
}

$(function(){
    $(document).keypress(function(e){
        if ($(e.target).is('input, textarea')) {
            return;
        };
        if (e.which === 97 || e.which === 108) {
           document.getElementById("abc").firstChild.nodeValue = rand_new();
        };
    });
});

您仅在第一次加载时生成随机字-将其转换为函数,它应该可以工作:

var newwords = ["NEWWORD1", "NEWWORD2", "NEWWORD3"];
function rand_new() {
    return newwords[Math.floor(Math.random() * newwords.length)];
}

$(function(){
    $(document).keypress(function(e){
        if ($(e.target).is('input, textarea')) {
            return;
        };
        if (e.which === 97 || e.which === 108) {
           document.getElementById("abc").firstChild.nodeValue = rand_new();
        };
    });
});