如何解决使用已有的代码单击后,如何使图像消失?
我要将图像彼此叠加,因此当单击每个图像时,它会消失,从而在下面显示图像。 这是我在脚本标签中的内容:
function attach_eventhandler(d){
d.onclick = function(){
this.style.visibility = "hidden";
}
}
var myArray = document.getElementsByTagName("heart");
for(var d of myArray){
attach_eventhandler(d);
}
这些是我现在拥有的两个图像。我希望“心”消失,然后“猪”消失。
<img id="pig"src="pig.jpg" alt= height="700 px" width="500 px">
<img id="heart"src="heart.jpg" alt= height="700 px" width="500 px">
解决方法
通过ID定位“心脏”更为容易,因为它确实具有ID
const heart = document.getElementById("heart");
heart.addEventListener("click",() => {
heart.style.visibility = "hidden";
})
<img id="pig" src="pig.jpg" alt="pig" height="700 px" width="500 px">
<img id="heart" src="heart.jpg" alt="heart" height="700 px" width="500 px">
您可以通过运行该代码并单击“心脏”来测试该代码
,实际上,除非应用css,否则图像似乎不会重叠。要使它们重叠,您应该使用position:absolute。像这样:
<div>
<img id="pig"src="pig.jpg" alt= height="700 px" width="500 px" style="position:absolute;top:0;left:0">
<img id="heart"src="heart.jpg" alt= height="700 px" width="500 px" style="position:absolute;top:0;left:0">
</div>
此外,您还希望使用“ img”而不是“ heart”来调用getElementsByTagName(),如下所示:
var myArray = document.getElementsByTagName("img");``
这是完整的页面:
<html>
<head>
</head>
<body>
<div>
<img id="pig"src="pig.jpg" alt= height="700 px" width="500 px" style="position:absolute;top:0;left:0">
<img id="heart"src="heart.jpg" alt= height="700 px" width="500 px" style="position:absolute;top:0;left:0">
</div>
<script>
function attach_eventhandler(d){
d.onclick = function(){
this.style.visibility = "hidden";
}
}
var myArray = document.getElementsByTagName("img");
for(var d of myArray){
attach_eventhandler(d);
}
</script>
</body>
</html>
编辑:哦,实际上,也许您正在这样做,但是您应该使用DOMContentLoaded事件运行脚本,如下所示:
<script>
window.addEventListener('DOMContentLoaded',function() {
var myArray = document.getElementsByTagName("img");
for(var d of myArray){
attach_eventhandler(d);
}
});
function attach_eventhandler(d){
d.onclick = function(){
this.style.visibility = "hidden";
};
}
</script>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。