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

JavaScript图片测验图片加载失败404错误排查求助

图片测验项目图片加载404错误问题

我正在开发一个简易JavaScript图片测验项目,目前完成了题目和选项的显示功能,但调用测验时图片无法加载,出现404资源加载失败错误。图片文件本身正常,试过.png和.jpg格式都不行。后续还要添加checkAnswer、得分显示等功能,但现在得先解决图片作为答题按钮加载失败的问题。

HTML代码

<section id="quiz">
      <div id="quiz-question-card" class="container welcome-card shadow-lg text-dark mb-3 d-flex justify-content-center">
        <div class="card-body">
          <h3 class="question-title">Question</h3>
          <p id="question-text"></p>
        </div>
      </div>
      <div class="container d-flex justify-content-center">
        <div id="answer-btns" class="row row-cols-1 row-cols-sm-2 row-cols-md-4">
          
        </div>
      </div>
</section>

JavaScript代码

let spQuiz = [
    {
        question: "What planet is closest to the Sun?",
        answers: [
            "../img/venus.png",
            "../img/mercury.png",
            "../img/mars.png",
            "../img/earth.png"
        ],
        correctAnswer: '1'
    },
    {
        question: "Which planet has the highest mountain in our solar system, a volcano named Olympus Mons?",
        answers: [
            "../img/mars.png",
            "../img/jupiter.png",
            "../img/neptune.png",
            "../img/earth.png"
        ],
        correctAnswer: '0'
    },
];

let newQuestion = 0;
function displayQuestion () {
    let question = spQuiz[newQuestion];
    document.getElementById("question-text").innerHTML = question.question;
    let answers = question.answers;
    for (let i = 0; i < answers.length; i++) {
        let answer = answers[i];
        let img = document.createElement("img");
        img.src = answers;
        img.onclick = function() {
            checkAnswer(i);
        };
        document.getElementById("answer-btns").appendChild(img);
    } 
}

displayQuestion();

问题修复方案

1. 核心代码错误修正

你代码里的关键问题是给图片src赋值时用了整个answers数组,而非当前循环的单个图片路径。

把displayQuestion函数中的这一行:

img.src = answers;

改为:

img.src = answer;

或者直接使用循环索引取值:

img.src = answers[i];

2. 路径合法性检查

确认HTML文件所在位置与img文件夹的相对路径是否匹配:

  • 如果HTML文件在项目根目录,../img/xxx.png会指向根目录的上一级,此时应改为./img/xxx.png或img/xxx.png
  • 可以在浏览器开发者工具的「网络」面板中查看图片的请求地址,对比实际文件路径是否一致

3. 优化建议(避免后续问题)

每次加载新题目时,先清空answer-btns容器,防止旧选项堆积:

function displayQuestion () {
    let question = spQuiz[newQuestion];
    document.getElementById("question-text").innerHTML = question.question;
    // 先清空容器
    document.getElementById("answer-btns").innerHTML = "";
    let answers = question.answers;
    for (let i = 0; i < answers.length; i++) {
        let answer = answers[i];
        let img = document.createElement("img");
        img.src = answer;
        img.onclick = function() {
            checkAnswer(i);
        };
        document.getElementById("answer-btns").appendChild(img);
    } 
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:05:21