Maison > Questions et réponses > le corps du texte
J'essaie d'ajouter des images à une application de quiz JavaScript mais j'ai tout essayé, en ajoutant l'attribut "img src" de différentes manières mais rien ne semble fonctionner... S'il vous plaît, aidez-nous à le faire fonctionner pour un projet qui doit être fait. C'est mon code...
const quizData = [{ question: "Which language runs in a web browser?", a: "Java", b: "C", c: "Python", d: "javascript", correct: "d", }, { question: "What does CSS stand for?", a: "Central Style Sheets", b: "Cascading Style Sheets", c: "Cascading Simple Sheets", d: "Cars SUVs Sailboats", correct: "b", }, { question: "What does HTML stand for?", a: "Hypertext Markup Language", b: "Hypertext Markdown Language", c: "Hyperloop Machine Language", d: "Helicopters Terminals Motorboats Lamborginis", correct: "a", }, { question: "What year was JavaScript launched?", a: "1996", b: "1995", c: "1994", d: "none of the above", correct: "b", }, { question: "Is this a test run?", a: "yes it is", b: "why do you care?", c: "stop asking", d: "I don't know", correct: "d", }, { question: "where do you see yourself in years?", a: "In the gutter", b: "Forbes magazine", c: "Simple guy", d: "outside the country", correct: "b", }, ]; const quiz = document.getElementById('quiz') const answerEls = document.querySelectorAll('.answer') const questionEl = document.getElementById('question') const a_text = document.getElementById('a_text') const b_text = document.getElementById('b_text') const c_text = document.getElementById('c_text') const d_text = document.getElementById('d_text') const submitBtn = document.getElementById('submit') let currentQuiz = 0 let score = 0 loadQuiz() function loadQuiz() { deselectAnswers() const currentQuizData = quizData[currentQuiz] questionEl.innerText = currentQuizData.question a_text.innerText = currentQuizData.a b_text.innerText = currentQuizData.b c_text.innerText = currentQuizData.c d_text.innerText = currentQuizData.d } function deselectAnswers() { answerEls.forEach(answerEl => answerEl.checked = false) } function getSelected() { let answer answerEls.forEach(answerEl => { if (answerEl.checked) { answer = answerEl.id } }) return answer } submitBtn.addEventListener('click', () => { const answer = getSelected() if (answer) { if (answer === quizData[currentQuiz].correct) { score++ } currentQuiz++ if (currentQuiz < quizData.length) { loadQuiz() } else { quiz.innerHTML = ` <h2>You answered ${score}/${quizData.length} questions correctly</h2> <button onclick="location.reload()">Reload</button> ` } } })
<div class="quiz-container" id="quiz"> <div class="quiz-header"> <h2 id="question">Question Text</h2> <ul> <li> <input type="radio" name="answer" id="a" class="answer"> <label for="a" id="a_text">Answer</label> </li> <li> <input type="radio" name="answer" id="b" class="answer"> <label for="b" id="b_text">Answer</label> </li> </ul> </div> <button id="submit">Submit</button> </div>
Je souhaite ajouter différentes images lorsque la question change. Que dois-je faire?
P粉8981078742024-02-04 00:17:38
Je suppose que vous souhaitez que l'image apparaisse à la fin du quiz avec innerHTML. Peut-être que l'URL que vous utilisez n'est pas absolue ? J'ai ajouté une image avec une URL absolue et ça marche :
const quizData = [{ question: "Which language runs in a web browser?", correct: "d", a: "Java", b: "C", c: "Python", d: "javascript", img: "https://placekitten.com/200/200" }, { question: "What does CSS stand for?", correct: "b", a: "Central Style Sheets", b: "Cascading Style Sheets", c: "Cascading Simple Sheets", d: "Cars SUVs Sailboats", img: "https://placekitten.com/300/200" }, { question: "What does HTML stand for?", correct: "a", a: "Hypertext Markup Language", b: "Hypertext Markdown Language", c: "Hyperloop Machine Language", d: "Helicopters Terminals Motorboats Lamborginis", img: "https://placekitten.com/200/300" }, { question: "What year was JavaScript launched?", correct: "b", a: "1996", b: "1995", c: "1994", d: "none of the above", img: "https://placekitten.com/400/200" }, { question: "Is this a test run?", correct: "d", a: "yes it is", b: "why do you care?", c: "stop asking", d: "I don't know", img: "https://placekitten.com/200/400" }, { question: "where do you see yourself in years?", correct: "b", a: "In the gutter", b: "Forbes magazine", c: "Simple guy", d: "outside the country", img: "https://placekitten.com/500/200" }]; const quiz = document.getElementById('quiz') const answerEls = document.querySelectorAll('.answer') const questionEl = document.getElementById('question') const a_text = document.getElementById('a_text') const b_text = document.getElementById('b_text') const c_text = document.getElementById('c_text') const d_text = document.getElementById('d_text') const submitBtn = document.getElementById('submit') const questImg = document.querySelector('.question-container > img') let currentQuiz = 0 let score = 0 loadQuiz() function loadQuiz() { deselectAnswers() const currentQuizData = quizData[currentQuiz] questionEl.innerText = currentQuizData.question a_text.innerText = currentQuizData.a b_text.innerText = currentQuizData.b c_text.innerText = currentQuizData.c d_text.innerText = currentQuizData.d questImg.src = currentQuizData.img } function deselectAnswers() { answerEls.forEach(answerEl => answerEl.checked = false) } function getSelected() { let answer answerEls.forEach(answerEl => { if (answerEl.checked) { answer = answerEl.id } }) return answer } submitBtn.addEventListener('click', () => { const answer = getSelected() if (answer) { if (answer === quizData[currentQuiz].correct) { score++ } currentQuiz++; if(currentQuiz < quizData.length) { loadQuiz() } else { quiz.innerHTML = `You answered ${score}/${quizData.length} questions correctly
` } } })
.question-container{ display: flex; align-items: flex-end; } .question-container > img{ width: 100px; margin-left: 10px; }