You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript事件处理器点击图片隐藏区块失效,求助解决

解决点击图片隐藏父区块的问题

你的代码无法运行的核心原因是JavaScript脚本在DOM元素加载完成前就执行了。当document.getElementById("banner")和document.getElementById("screen1")执行时,页面里的<div id="screen1">和<img id="banner">还没被浏览器解析,所以这两个变量的值都是null,自然无法绑定点击事件。

下面给你三种可行的解决办法:

方案1:把脚本移到末尾

将<script>标签放到</body>闭合标签之前,让浏览器先解析完所有DOM元素再执行JS代码:

<body>
    <!-- Header -->
    <div id="screen1" class="header section">
      <!-- Title -->
      <div id="title">
        <img src="https://picsum.photos/id/1/20/30">
        <h1>The Legend of Zelda: Almanac</h1>
        <img src="https://picsum.photos/id/1/20/30">
      </div>
      <!-- Subtitle -->
      <h3>A Complete Collection of all TLoZ Games</h3>
      <!-- Main Image -->
      <img id="banner" src="https://picsum.photos/id/1/20/30">
    </div>

    <!-- 脚本移至此处 -->
    <script src="interactive.js"></script>
</body>

方案2:用DOMContentLoaded事件包裹代码

如果不想移动脚本位置,就在JS代码里监听DOMContentLoaded事件,确保DOM加载完成后再执行元素获取和事件绑定逻辑:

document.addEventListener('DOMContentLoaded', function() {
    let banner = document.getElementById("banner");
    let screen1 = document.getElementById("screen1");

    function changeDisplay() {
        screen1.style.display = "none"
    }

    banner.addEventListener("click", changeDisplay);
});

方案3:给script标签添加defer属性

defer属性会让浏览器延迟脚本执行,直到DOM解析完成,原JS代码无需修改:

<script src="interactive.js" defer></script>

内容的提问来源于stack exchange,提问作者Cesar Quevedo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 16:43:11