JavaScript跳转函数失败,找不到错误

JavaScript跳转函数失败,找不到错误,javascript,html,css,settimeout,Javascript,Html,Css,Settimeout,我有一个简单的JavaScript、CSS和HTML游戏的开始,这个游戏一直在运行,直到我创建了一个跳转函数。OnClick,css生成的字符元素作为绿色矩形应该跳转。相反,它是静态的,不移动 最初,我有以下代码: .animate{ animation: jump 500ms; } 在角色的CSS中,它在没有任何用户交互的情况下连续跳跃 我做错了什么?我认为这与此有关: function jump(){ character.classList.add("a

我有一个简单的JavaScript、CSS和HTML游戏的开始,这个游戏一直在运行,直到我创建了一个跳转函数。OnClick,css生成的字符元素作为绿色矩形应该跳转。相反,它是静态的,不移动

最初,我有以下代码:

.animate{
    animation: jump 500ms;
}
在角色的CSS中,它在没有任何用户交互的情况下连续跳跃

我做错了什么?我认为这与此有关:

 function jump(){
        character.classList.add("animate");
        setTimeout(function(){
            character.classList.remove("animate");
        },500);
    }
作为回答,我希望能指出错误,并提供新代码和关于setTimeout函数如何工作的清晰解释。setTimeout是一个现有的内置方法吗?如果是的话,我们在哪里可以找到关于这些东西的文档

代码

var character=document.getElementByIdcharacter; var敌人=document.getElementByIdenemy; //在这里的css中添加动画功能,以便将其应用于我们的角色 函数跳转{ character.classList.addanimate; setTimeoutfunction{ character.classList.removeanimate; }, 500; } * { 填充:0; 差额:22; } 游戏{ 宽度:500px; 高度:500px; 边框:1px实心319b4e; } 性格{ 宽度:30px; 高度:120px; 背景颜色:绿色; 位置:相对位置; 顶部:380px; 边界半径:20px; /*动画:跳跃500毫秒*/ } /*名为animate的新类*/ .制作动画{ 动画:跳跃500毫秒; } 敌人{ 宽度:60px; 高度:60px; 背景色:红色; 边界半径:14px; 位置:相对位置; 顶部:320px; 左:440px; 动画:Move1s无限线性; } @关键帧移动敌人{ 0% { 左:440px; } 50% { 顶部:58px; } 100% { 左:0px; 顶部:320倍; } } @关键帧跳跃{ 0% { 顶部:380px; } 30% { 顶部:200px; } 50% { 顶部:200px; } 100% { 顶部:380px; } } 文件 游戏 我的第一场比赛

我们都有敌人


在复制代码并对其进行测试之后,问题在于 document.getElementById用小写字母b拼写,与document.getElementById类似,这两行应该改为:

var character = document.getElementById("character");
var enemy = document.getElementById("enemy");`
至于setTimeout,它是一个内置函数,在第二个参数中指定的一定时间后执行第一个参数中提供的函数,该函数在后台工作,因此它不会阻止其他事情发生

当我第一次开始学习html等时,我使用了这个网站

如果您想将其改为向上箭头,只需添加一个事件侦听器来检查keyup事件,并检查keycode是否与向上箭头38匹配,其他键可以通过console进行检查。登录事件的keycode,因此在JavaScript中的某个地方,请执行以下操作

addEventListener("keyup", function(e) {
    if(e.keyCode == 38) jump()
})
所以

整个片段是

var character=document.getElementByIdcharacter; var敌人=document.getElementByIdenemy; //在这里的css中添加动画功能,以便将其应用于我们的角色 函数跳转{ character.classList.addanimate; setTimeoutfunction{ character.classList.removeanimate; },500; } addEventListenerkeyup,函数E{ ife.keyCode==38跳转 } *{ 填充:0; 差额:22; } 游戏{ 宽度:500px; 高度:500px; 边框:1px实心319b4e; } 性格{ 宽度:30px; 高度:120px; 背景颜色:绿色; 位置:相对位置; 顶部:380px; 边界半径:20px; /*动画:跳跃500毫秒*/ } /*名为animate的新类*/ .制作动画{ 动画:跳跃500毫秒; } 敌人{ 宽度:60px; 高度:60px; 背景色:红色; 边界半径:14px; 位置:相对位置; 顶部:320px; 左:440px; 动画:Move1s无限线性; } @关键帧移动敌人{ 0%{左:440px;} 50%{top:58px;} 100%{左:0px;顶:320x;} } @关键帧跳跃{ 0%{top:380px;} 30%{top:200px;} 50%{顶部:200px;} 100%{顶部:380px;} } 文件 游戏 我的第一场比赛

我们都有敌人


在复制代码并对其进行测试之后,问题在于 document.getElementById用小写字母b拼写,与document.getElementById类似,这两行应该改为:

var character = document.getElementById("character");
var enemy = document.getElementById("enemy");`
至于setTimeout,它是一个内置函数,在第二个参数中指定的一定时间后执行第一个参数中提供的函数,该函数在后台工作,因此它不会阻止其他事情发生

当我第一次开始学习html等时,我使用了这个网站

如果您想将其改为向上箭头,只需添加一个事件侦听器来检查keyup事件,并检查keycode是否与向上箭头38匹配,其他键可以通过console进行检查。登录事件的keycode,因此在JavaScript中的某个地方,请执行以下操作

addEventListener("keyup", function(e) {
    if(e.keyCode == 38) jump()
})
所以

整个片段是

var character=document.getElementByIdcharacter; var敌人=document.getElementByIdenemy; //艾丁 g此处css中的动画函数,因此它应用于我们的角色 函数跳转{ character.classList.addanimate; setTimeoutfunction{ character.classList.removeanimate; },500; } addEventListenerkeyup,函数E{ ife.keyCode==38跳转 } *{ 填充:0; 差额:22; } 游戏{ 宽度:500px; 高度:500px; 边框:1px实心319b4e; } 性格{ 宽度:30px; 高度:120px; 背景颜色:绿色; 位置:相对位置; 顶部:380px; 边界半径:20px; /*动画:跳跃500毫秒*/ } /*名为animate的新类*/ .制作动画{ 动画:跳跃500毫秒; } 敌人{ 宽度:60px; 高度:60px; 背景色:红色; 边界半径:14px; 位置:相对位置; 顶部:320px; 左:440px; 动画:Move1s无限线性; } @关键帧移动敌人{ 0%{左:440px;} 50%{top:58px;} 100%{左:0px;顶:320x;} } @关键帧跳跃{ 0%{top:380px;} 30%{top:200px;} 50%{顶部:200px;} 100%{顶部:380px;} } 文件 游戏 我的第一场比赛

我们都有敌人

正在工作

问题是:您的write document.getElementbyid字符很小,但getElementbyid的字符b很小,所以它会出错 因此document.getElementById字符是正确的 var character=document.getElementByIdcharacter; var敌人=document.getElementByIdenemy; //在这里的css中添加动画功能,以便将其应用于我们的角色 函数跳转{ character.classList.addanimate; setTimeoutfunction{ character.classList.removeanimate; },500; } *{ 填充:0; 差额:22; } 游戏{ 宽度:500px; 高度:500px; 边框:1px实心319b4e; } 性格{ 宽度:30px; 高度:120px; 背景颜色:绿色; 位置:相对位置; 顶部:380px; 边界半径:20px; /*动画:跳跃500毫秒*/ } /*名为animate的新类*/ .制作动画{ 动画:跳跃500毫秒; } 敌人{ 宽度:60px; 高度:60px; 背景色:红色; 边界半径:14px; 位置:相对位置; 顶部:320px; 左:440px; 动画:Move1s无限线性; } @关键帧移动敌人{ 0%{左:440px;} 50%{top:58px;} 100%{左:0px;顶:320x;} } @关键帧跳跃{ 0%{top:380px;} 30%{top:200px;} 50%{顶部:200px;} 100%{顶部:380px;} } 文件 游戏 我的第一场比赛

我们都有敌人

正在工作

问题是:您的write document.getElementbyid字符很小,但getElementbyid的字符b很小,所以它会出错 因此document.getElementById字符是正确的 var character=document.getElementByIdcharacter; var敌人=document.getElementByIdenemy; //在这里的css中添加动画功能,以便将其应用于我们的角色 函数跳转{ character.classList.addanimate; setTimeoutfunction{ character.classList.removeanimate; },500; } *{ 填充:0; 差额:22; } 游戏{ 宽度:500px; 高度:500px; 边框:1px实心319b4e; } 性格{ 宽度:30px; 高度:120px; 背景颜色:绿色; 位置:相对位置; 顶部:380px; 边界半径:20px; /*动画:跳跃500毫秒*/ } /*名为animate的新类*/ .制作动画{ 动画:跳跃500毫秒; } 敌人{ 宽度:60px; 高度:60px; 背景色:红色; 边界半径:14px; 位置:相对位置; 顶部:320px; 左:440px; 动画:Move1s无限线性; } @关键帧移动敌人{ 0%{左:440px;} 50%{top:58px;} 100%{左:0px;顶:320x;} } @关键帧跳跃{ 0%{top:380px;} 30%{top:200px;} 50%{顶部:200px;} 100%{顶部:380px;} } 文件 游戏 我的第一场比赛

我们都有敌人

setTimeout是一个现有的内置方法吗?如果是的话,我们在哪里可以找到关于这些东西的文档

是的,setTimeout是一种内置方法。你可以在这里了解更多。 setTimeout函数的工作原理

所以,setTimeout方法接受一个函数/代码和一个毫秒的延迟,然后执行它。请参阅上面的链接。 它将事件带入事件循环,使其成为异步调用

过一会儿我会查一下代码,然后再打给你!:D

书签MDN网络文档,它真的很方便

setTimeout是一个现有的内置方法吗?如果是的话,我们在哪里可以找到关于这些东西的文档

是的,setTimeout是一种内置方法。你可以在这里了解更多。 setTimeout函数的工作原理

所以,setTimeout方法接受一个函数/代码和一个毫秒的延迟,然后执行它。请参阅上面的链接。 它将事件带入事件循环,使其成为异步调用

过一会儿我会查一下代码,然后再打给你!:D

书签MDN网络文档,它真的很方便

它将是getElementById而不是getElem
恩特比德,谢谢你!想知道为什么编辑们不把这件事拿出来,然后打上标记…解决了,thanks@Compoot是的,我想知道为什么他们关闭了它,对于setTimeout等仍然是有效的问题,Beginres问这个问题很好…非常感谢你们的帮助-谢谢@bluejayke-如果你感兴趣的话,我的同事也以我的身份发布了这篇文章!它将是getElementById而不是getElementById。谢谢!想知道为什么编辑们不把这件事拿出来,然后打上标记…解决了,thanks@Compoot是的,我想知道为什么他们关闭了它,对于setTimeout等仍然是有效的问题,Beginres问这个问题很好…非常感谢你们的帮助-谢谢@bluejayke-如果你感兴趣的话,我的同事也以我的身份发布了这篇文章-如果你也感兴趣,有这个:-如果你也感兴趣,有这个: