我是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;
};
});
});
答案 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_new
或rand_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);