Javascript Can';我似乎无法让这个柜台工作
嗨,我正在尝试建立一个简单的网络浏览器游戏,它会告诉你点击键盘键的速度有多快(例如50,75,100)。我这里有这个代码: HTML:Javascript Can';我似乎无法让这个柜台工作,javascript,Javascript,嗨,我正在尝试建立一个简单的网络浏览器游戏,它会告诉你点击键盘键的速度有多快(例如50,75,100)。我这里有这个代码: HTML: 我似乎无法让if语句执行将禁用控件和显示警报的函数。任何帮助或建议都将不胜感激。我认为您需要的是keydown函数中的“if”,否则它将在执行js时运行一次 window.onload = function() { myFunction() document.onkeydown = function(e){ if (IsGameAli
我似乎无法让if语句执行将禁用控件和显示警报的函数。任何帮助或建议都将不胜感激。我认为您需要的是keydown函数中的“if”,否则它将在执行js时运行一次
window.onload = function() {
myFunction()
document.onkeydown = function(e){
if (IsGameAlive==1) {
e = e || window.event;
var key = e.which || e.keyCode;
if(key==32){
add();
}
}
}
}
此外,正如Andy在评论中提到的,您可能希望将计时器更改为1秒,而不是1/1000秒
function myFunction() {
setInterval (stopwatch,1000)
}
if语句应该在函数中。因此,不是:
function add() {
count = count + 1;
}
if (count==50) {
gamefinished();
}
应该是:
function add() {
count = count + 1;
if (count==50) {
gamefinished();
}
}
从您当前的代码来看,似乎存在一些简单的常规错误,因此这里有一个经过清理的版本:
var count = 0;
var IsGameAlive = true; //use booleans
var interval; //store interval
window.onload = function() {
myFunction(); //missing semi-colons
if (IsGameAlive) { //if statement should be contained inside window.onload
document.onkeydown = function(e){
if (IsGameAlive){ //prevent detection when game ended
e = e || window.event;
var key = e.which || e.keyCode;
if(key==32){
add();
}
}
}
}
}; //missing semi-colons
function myFunction() {
interval = setInterval(stopwatch,1000); //missing semi-colons, and run every 1000 = 1 second
}
function stopwatch() {
document.getElementById('dt').innerHTML = count;
}
function add() {
count = count + 1;
if (count>=50) {
gamefinished();
}
return;
}
function gamefinished() {
window.alert("You Won!");
IsGameAlive = false;
clearInterval(interval); //remove interval
return;
}
编辑
为了更好地保持时间,可以将计时器设置回每10毫秒运行一次,然后使用下面的函数获得更准确的时间。(与使用设置为1毫秒的计时器相比,这也减少了资源密集度,同时保持非常准确)
你能给我们一个JSFIDLE吗?每毫秒从DOM中抓取一个元素可能不是一个好主意fwiw。你的if语句将被调用一次,很可能是在你的DOM已经准备好编辑它之前,仍然不起作用,还有什么建议吗?把
文档。onkeydown
部分扔到你的窗口里。onload
谢谢,伙计,它行得通,你能给我一个简短的解释为什么它行不通吗?我只开始使用Javascript。谢谢:)就像以前一样,if语句不在任何函数中。当页面最初加载时,任何不在函数内的代码只执行一次。您希望它在每次计数更改时执行,因此需要将其放入add()函数中。希望有帮助!如果这是有益的,请考虑接受和投票-见
function add() {
count = count + 1;
if (count==50) {
gamefinished();
}
}
var count = 0;
var IsGameAlive = true; //use booleans
var interval; //store interval
window.onload = function() {
myFunction(); //missing semi-colons
if (IsGameAlive) { //if statement should be contained inside window.onload
document.onkeydown = function(e){
if (IsGameAlive){ //prevent detection when game ended
e = e || window.event;
var key = e.which || e.keyCode;
if(key==32){
add();
}
}
}
}
}; //missing semi-colons
function myFunction() {
interval = setInterval(stopwatch,1000); //missing semi-colons, and run every 1000 = 1 second
}
function stopwatch() {
document.getElementById('dt').innerHTML = count;
}
function add() {
count = count + 1;
if (count>=50) {
gamefinished();
}
return;
}
function gamefinished() {
window.alert("You Won!");
IsGameAlive = false;
clearInterval(interval); //remove interval
return;
}
var initialTime = Date.now(); //global variable
function getSecondsPassed(){
return Math.floor((Date.now()-initialTime)/1000);
}