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

时间:2014-03-14 18:31:02

标签: javascript jquery keypress

我是javascript / jquery的新手并且遇到了以下问题:

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

代码有效,但只执行一次。我的目标是更改“abc”元素,比如20次,每次选择“newwords”中的一个元素。

也许我忘记了某个地方的循环?

HTML:

<p id="abc" style="font-size:20px" align="center">WORD</p>  

的javascript / jquery的:

var newwords = ["NEWWORD1", "NEWWORD2", "NEWWORD3"];
var rand_new = 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;
        };
        });
    });

5 个答案:

答案 0 :(得分:2)

并非您的代码只能运行一次,您的问题是您只生成一次随机数,因此您始终可以获得相同的结果。在函数内移动数字生成,它可以工作:

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;
    };    
});

jsfiddle:http://jsfiddle.net/R5vqM/1/

答案 1 :(得分:1)

因此,您检查按键是'a'还是'i',如果是,则将#abc容器中的文本设置为{{1}中的值}。它实际上每次都在工作,但是rand_new的值没有被改变,因为它只设置了一次。每次按rand_newrand_new时,您需要设置a。因此,通过简单的更改,您就可以拥有:

i

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

答案 2 :(得分:1)

您只是在第一次加载时生成随机单词 - 将其转换为函数并且它应该起作用:

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();
        };
    });
});

答案 3 :(得分:1)

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


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

答案 4 :(得分:-1)

如果你要使用Jquery,只需坚持下去。更容易。

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