如何将图像添加到JavaScript测验

时间:2018-04-09 08:58:07

标签: javascript image web-deployment

我正在使用Javascript创建测验,但我想用图片替换我的问题。即编程语言的徽标。我见过其他例子,但没有看到我需要的东西。如果有人可以提供帮助,我会非常感激。 很抱歉,该代码段不起作用,不使用它。我希望下面的代码有助于expalin我要求的内容



function populate() {
  if (quiz.isEnded()) {
    showScores();
  } else {
    // show question
    var element = document.getElementById("question");
    element.innerHTML = quiz.getQuestionIndex().text;

    // show options
    var choices = quiz.getQuestionIndex().choices;
    for (var i = 0; i < choices.length; i++) {
      var element = document.getElementById("choice" + i);
      element.innerHTML = choices[i];
      guess("btn" + i, choices[i]);
    }

    showProgress();
  }
};

function guess(id, guess) {
  var button = document.getElementById(id);
  button.onclick = function() {
    quiz.guess(guess);
    //populate();
  }
};


function showProgress() {
  var currentQuestionNumber = quiz.questionIndex + 1;
  var element = document.getElementById("progress");
  element.innerHTML = "Question " + currentQuestionNumber + " of " + quiz.questions.length;
};

function showScores() {
  var gameOverHTML = "<h1>Result</h1>";
  gameOverHTML += "<h2 id='score'> Your scores: " + quiz.score + "</h2>";
  var element = document.getElementById("quiz");
  element.innerHTML = gameOverHTML;
};

// create questions
var questions = [
  new Question("Which one is not an object oriented programming language?", ["Java", "C#", "C++", "C"], "C"),
  new Question("Which language is used for styling web pages?", ["HTML", "JQuery", "CSS", "XML"], "CSS"),
  new Question("There are ____ main components of object oriented programming.", ["1", "6", "2", "4"], "4"),
  new Question("Which language is used for web apps?", ["PHP", "Python", "Javascript", "All"], "All"),
  new Question("MVC is a ____.", ["Language", "Library", "Framework", "All"], "Framework")
];

function Question(text, choices, answer) {
  this.text = text;
  this.choices = choices;
  this.answer = answer;
}

Question.prototype.isCorrectAnswer = function(choice) {
  return this.answer === choice;
}


function Quiz(questions) {
  this.score = 0;
  this.questions = questions;
  this.questionIndex = 0;
}

Quiz.prototype.getQuestionIndex = function() {
  return this.questions[this.questionIndex];
}

Quiz.prototype.guess = function(answer) {
  if (this.getQuestionIndex().isCorrectAnswer(answer)) {
    this.score++;
  }

  this.questionIndex++;
}

Quiz.prototype.isEnded = function() {
  return this.questionIndex === this.questions.length;
}

// create quiz
var quiz = new Quiz(questions);

// display quiz
populate();
&#13;
body {
  background-color: #eeeeee;
}

.grid {
  width: 600px;
  height: 500px;
  margin: 0 auto;
  background-color: #fff;
  padding: 10px 50px 50px 50px;
  border-radius: 50px;
  border: 2px solid #cbcbcb;
  box-shadow: 10px 15px 5px #cbcbcb;
}

.grid h1 {
  font-family: "sans-serif";
  background-color: #57636e;
  font-size: 60px;
  text-align: center;
  color: #ffffff;
  padding: 2px 0px;
  border-radius: 50px;
}

#score {
  color: #5A6772;
  text-align: center;
  font-size: 30px;
}

.grid #question {
  font-family: "monospace";
  font-size: 30px;
  color: #5A6772;
}

.buttons {
  margin-top: 30px;
}

#btn0,
#btn1,
#btn2,
#btn3 {
  background-color: #778897;
  width: 250px;
  font-size: 20px;
  color: #fff;
  border: 1px solid #1D3C6A;
  border-radius: 50px;
  margin: 10px 40px 10px 0px;
  padding: 10px 10px;
}

#btn0:hover,
#btn1:hover,
#btn2:hover,
#btn3:hover {
  cursor: pointer;
  background-color: #57636e;
}

#btn0:focus,
#btn1:focus,
#btn2:focus,
#btn3:focus {
  outline: 0;
}

#progress {
  color: #2b2b2b;
  font-size: 18px;
}
&#13;
<!DOCTYPE html>
<html>

<head lang="en">
  <meta charset="UTF-8">
  <title>Quiz</title>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
  <div class="grid">
    <div id="quiz">
      <h1>Quiz</h1>
      <hr style="margin-bottom: 20px">

      <p id="question"></p>

      <div class="buttons">
        <button id="btn0"><span id="choice0"></span></button>
        <button id="btn1"><span id="choice1"></span></button>
        <button id="btn2"><span id="choice2"></span></button>
        <button id="btn3"><span id="choice3"></span></button>
      </div>

      <hr style="margin-top: 50px">
      <footer>
        <p id="progress">Question x of y</p>
      </footer>
    </div>
  </div>

  
</body>

</html>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

正如约克所说,您需要将图像上传/放入服务器或从其他网址获取图像。

接下来,您需要保存它们(可能在questions中)。在此示例中,我在每个imgURL中使用了Question。 然后使用此代码显示图像:

  var element = document.getElementById("question");
  element.innerHTML = '<img src=' + quiz.getQuestionIndex().imgURL + '" />'

答案 1 :(得分:0)

我认为你的意思是这 - 用你自己的替换占位符图像。 encodeURI只是因为#和++是uri元素:

&#13;
&#13;
var images = {
  "CSS"  : "https://via.placeholder.com/200x50?text=CSS",
  "HTML" : "https://via.placeholder.com/200x50?text=HTML",
  "Java" : "https://via.placeholder.com/200x50?text=JAVA",
  "C#"   : "https://via.placeholder.com/200x50?text=C"+encodeURIComponent("&#35;"),
  "C++"  : "https://via.placeholder.com/200x50?text=C"+encodeURIComponent("&#43;&#43;"),
  "C"    : "https://via.placeholder.com/200x50?text=C"
  
}  
function populate() {
  if (quiz.isEnded()) {
    showScores();
  } else {
    // show question
    var element = document.getElementById("question");
    element.innerHTML = quiz.getQuestionIndex().text;

    // show options
    var choices = quiz.getQuestionIndex().choices;
    for (var i = 0; i < choices.length; i++) {
      var element = document.getElementById("choice" + i);
      element.innerHTML = images[choices[i]]? '<img src="'+images[choices[i]]+'"/>':choices[i];
      guess("btn" + i, choices[i]);
    }

    showProgress();
  }
};

function guess(id, guess) {
  var button = document.getElementById(id);
  button.onclick = function() {
    quiz.guess(guess);
    populate();
  }
};


function showProgress() {
  var currentQuestionNumber = quiz.questionIndex + 1;
  var element = document.getElementById("progress");
  element.innerHTML = "Question " + currentQuestionNumber + " of " + quiz.questions.length;
};

function showScores() {
  var gameOverHTML = "<h1>Result</h1>";
  gameOverHTML += "<h2 id='score'> Your scores: " + quiz.score + "</h2>";
  var element = document.getElementById("quiz");
  element.innerHTML = gameOverHTML;
};

// create questions
var questions = [
  new Question("<img src='https://via.placeholder.com/200x50?text=OOP' /><br/>Which one is not an object oriented programming language?", ["Java", "C#", "C++", "C"], "C"),
  new Question("<img src='https://via.placeholder.com/200x50?text=Web+development' /><br/>Which language is used for styling web pages?", ["HTML", "JQuery", "CSS", "XML"], "CSS"),
  new Question("There are ____ main components of object oriented programming.", ["1", "6", "2", "4"], "4"),
  new Question("Which language is used for web apps?", ["PHP", "Python", "Javascript", "All"], "All"),
  new Question("MVC is a ____.", ["Language", "Library", "Framework", "All"], "Framework")
];

function Question(text, choices, answer) {
  this.text = text;
  this.choices = choices;
  this.answer = answer;
}

Question.prototype.isCorrectAnswer = function(choice) {
  return this.answer === choice;
}


function Quiz(questions) {
  this.score = 0;
  this.questions = questions;
  this.questionIndex = 0;
}

Quiz.prototype.getQuestionIndex = function() {
  return this.questions[this.questionIndex];
}

Quiz.prototype.guess = function(answer) {
  if (this.getQuestionIndex().isCorrectAnswer(answer)) {
    this.score++;
  }

  this.questionIndex++;
}

Quiz.prototype.isEnded = function() {
  return this.questionIndex === this.questions.length;
}

// create quiz
var quiz = new Quiz(questions);

// display quiz
populate();
&#13;
body {
  background-color: #eeeeee;
}

.grid {
  width: 600px;
  height: 500px;
  margin: 0 auto;
  background-color: #fff;
  padding: 10px 50px 50px 50px;
  border-radius: 50px;
  border: 2px solid #cbcbcb;
  box-shadow: 10px 15px 5px #cbcbcb;
}

.grid h1 {
  font-family: "sans-serif";
  background-color: #57636e;
  font-size: 60px;
  text-align: center;
  color: #ffffff;
  padding: 2px 0px;
  border-radius: 50px;
}

#score {
  color: #5A6772;
  text-align: center;
  font-size: 30px;
}

.grid #question {
  font-family: "monospace";
  font-size: 30px;
  color: #5A6772;
}

.buttons {
  margin-top: 30px;
}

#btn0,
#btn1,
#btn2,
#btn3 {
  background-color: #778897;
  width: 250px;
  font-size: 20px;
  color: #fff;
  border: 1px solid #1D3C6A;
  border-radius: 50px;
  margin: 10px 40px 10px 0px;
  padding: 10px 10px;
}

#btn0:hover,
#btn1:hover,
#btn2:hover,
#btn3:hover {
  cursor: pointer;
  background-color: #57636e;
}

#btn0:focus,
#btn1:focus,
#btn2:focus,
#btn3:focus {
  outline: 0;
}

#progress {
  color: #2b2b2b;
  font-size: 18px;
}
&#13;
<!DOCTYPE html>
<html>

<head lang="en">
  <meta charset="UTF-8">
  <title>Quiz</title>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
  <div class="grid">
    <div id="quiz">
      <h1>Quiz</h1>
      <hr style="margin-bottom: 20px">

      <p id="question"></p>

      <div class="buttons">
        <button id="btn0"><span id="choice0"></span></button>
        <button id="btn1"><span id="choice1"></span></button>
        <button id="btn2"><span id="choice2"></span></button>
        <button id="btn3"><span id="choice3"></span></button>
      </div>

      <hr style="margin-top: 50px">
      <footer>
        <p id="progress">Question x of y</p>
      </footer>
    </div>
  </div>

  
</body>

</html>
&#13;
&#13;
&#13;