JavaScript跳转函数失败,找不到错误
我有一个简单的JavaScript、CSS和HTML游戏的开始,这个游戏一直在运行,直到我创建了一个跳转函数。OnClick,css生成的字符元素作为绿色矩形应该跳转。相反,它是静态的,不移动 最初,我有以下代码: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
.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-如果你感兴趣的话,我的同事也以我的身份发布了这篇文章-如果你也感兴趣,有这个:-如果你也感兴趣,有这个: