javascript - JavaScript innerHTML 几秒钟
问题描述
我遵循了一个关于如何使用 JS/HTML 构建基本游戏的教程,现在我正在扩展它。游戏在这里
- 按空间开火
- 按右箭头向右转,按左箭头左转
我能够获得敌人和导弹之间碰撞的位置,并#explosion
使用innerHTML
. 我很困惑如何在 1 秒后消除爆炸。
const explosion = (topEn, leftEn) => {
document.getElementById('explosions').innerHTML +=
`
<div id="explosion" style='
left:${leftEn}px;
top: ${topEn}px;
'></div>
`;
}
#explosion{
background-image: url("assets/explosion.png");
height: 50px;
width: 50px;
position: absolute;
}
解决方案
如果没有其余的代码,很难给你一个准确的展示,但这主要是我的评论所指的。
const explosion = (topEn, leftEn, delay = 1000) => {
const div = document.createElement('div');
div.id = 'explosion';
div.style.top = topEn + 'px';
div.style.left = leftEn + 'px';
document.getElementById('explosions').append(div);
setTimeout(() => {
div.remove()
}, delay);
}
explosion(200, 200, 1000);
setTimeout(()=> explosion(300, 400, 800), 500)
#explosion {
background-image: url("assets/explosion.png");
height: 50px;
width: 50px;
position: absolute;
/* I added this to be able to see the divs*/
background-color: red;
}
body, html, #explosions {
height: 100%;
width: 100%;
}
<div id="explosions"></div>
笔记:
如果您可能同时在 DOM 中有多个相同类型的元素(即)爆炸,您应该使用类而不是 ID。ID 是唯一标识符,因此虽然您可以拥有多个具有相同 ID 的元素,但它会导致您产生意想不到的结果。如果您的游戏能够在任何给定时间进行超过 1 次爆炸,请#explosion
移至.explosion
推荐阅读
- angular - Ionic 4,标签组件路由问题
- python - 使用递归而不是python中的循环将列表a按值升序排序
- android - 我的应用被拒绝,因为应用在应用之外有广告
- postgresql - 如何列出与其他表至少有一个关联的一张表中的记录?
- java - spring boot feign客户端集成测试配置
- android - 有什么方法可以在所有设备中使用 arcore 吗?
- node.js - 从 ffmpeg 通过 Janus 流式传输的视频不流畅
- python - Dlib 安装到本地 conda 目录而不是系统目录
- java - log4j.properties 文件在项目/类位置中消失
- python - 如何在python中删除数组的最后一列