【发布时间】:2020-10-23 07:42:37
【问题描述】:
我是 Rahul,我是编码新手。我有一个与 DOM 事件相关的查询。请看下面的代码sn -p -
let door1 = document.getElementById('one');
door1.src = "closed_door.svg";
const isClicked = (door) => {
if(door.src === "closed_door.svg") {
return true;
}
else {
return false;
}
};
door1.onclick = () => {
if(isClicked(door1)) {
door1.src = "beach.svg";}
};
简单地说,one 是元素的 id。如果没有 isClicked,我可以在单击时成功地将 src 从关闭的门更改为海滩。但是当我引入 isClick 时,它并没有改变。有人可以告诉我我错过了什么。我会很感激的
注意 - 我正在构建与此类似的游戏 - https://s3.amazonaws.com/codecademy-content/projects/chore-door/chore-door-final/index.html 他们使用与我相同的过程。所以请提出一个解决方案,告诉我我在这里犯的错误,而不是问题的替代方案
问候 拉胡尔
【问题讨论】:
-
console.log(door.src)在 isClicked 方法中,看看它说的是什么 -
修改html中直接出现的属性时最好使用
setAttribute和getAttribute。将door1.src = 'closed_door.svg';更改为door1.setAttribute('src', 'closed_door.svg');。将if (door.src === 'closed_door.svg')更改为if (door.getAttribute('src') === 'closed_door.svg') -
我的假设是逻辑需要改成
door.src.endsWith('closed_door.svg') -
门Element上的
src是元素的属性,不是属性。该属性很可能具有完整的文件路径。属性可能是“me.svg”,但属性可能是“yoursite.com/me.svg”。这就是为什么我说要记录价值并自己查看
标签: javascript