javascript - 动画扫帚
问题描述
在 Javascript 中,当我单击扫帚时,它会将图像 src 更改为 gif,并将 ID 更改为“walkingBroom”。这行得通。
然后,当我单击扫帚时,它会更改类(这使它穿过屏幕)。这不起作用。
我不知道我做错了什么 - 任何人都可以帮忙吗?好像身份证没改过一样。
document.getElementById("stillBroom").addEventListener("dblclick", animate);
function animate(){
document.getElementById("stillBroom").src = "broom.gif";
document.getElementById("stillBroom").id = "walkingBroom";}
document.getElementById("walkingBroom").addEventListener("click", walk);
function walk(){
document.getElementById("walkingBroom").className = "broom pattern0 speed1";}
解决方案
您应该管理变量中的逻辑,例如let currentState="still"
,然后单击,更改为currentState="walking"
,并采取相应的行动。目前,您正在立即尝试将单击事件附加到不存在的“walkingBroom”元素(它将存在,但稍后,在您单击扫帚一次之后)。就此而言,您的控制台很可能会说Error - Can't read property addEventListener of null
并且您的脚本在没有运行的情况下崩溃。打开你的控制台,它非常有用。
let currentState = "still";
broom.addEventListener("dblclick", clickHandler);
const clickHandler = () => {
switch(currentState) {
case "still" :
currentState="walking";
broom.src="broom.gif";
break;
case "walking":
currentState="flying";
broom.className = "broom pattern0 speed1";
break;
}
}
推荐阅读
- laravel - 如何使 php SDK 的更改与 Laravel 中的 Git 一起使用
- kotlin - java.lang.SecurityException:没有写入/storage/emulated/0/Download/的权限
- reactjs - 用相同的组件拍摄照片和视频反应原生
- sql - 如何制作我的 WHERE 语句来过滤基于当前月份的 5 个月动态范围的第一天?
- python - pythonanywhere上的静态文件加载问题
- pandas - 如何使用图例中分配的颜色显示值范围?
- networking - 域“.localdomain”的意义是什么?
- sql - 查询中的对象变量
- google-apps-script - 在表单谷歌表中搜索记录
- azure-active-directory - 为用户颁发可验证凭证时,什么是有效的凭证主体?