Javascript 包含单击时不触发的方法

Javascript 包含单击时不触发的方法,javascript,jquery,Javascript,Jquery,我正在做一个简单的危险游戏,我的点击根本不会触发。我试图让div点击触发器,只要它包含变量answer中包含的特定文本 <h1 id="question"> </h1> <div id="answer0">.</div> <div id="answer1">.</div> <div id="answer2">.</div> <div id="answer3">.</div&

我正在做一个简单的危险游戏,我的点击根本不会触发。我试图让div点击触发器,只要它包含变量answer中包含的特定文本

    <h1 id="question">

</h1>
<div id="answer0">.</div>
<div id="answer1">.</div>
<div id="answer2">.</div>
<div id="answer3">.</div>



 var game = {
  correct: 0,

  questions: [
    "Where was bread invented?",
    "What color is the Whitehouse?",
    "Where is the Eiffel Tower?",
    "What is the capital of Texas?"
  ],
  answers: [
    ["Italy", "Japan", "Egypt", "Canada"],
    ["White", "Black", "Green", "Purple"],
    ["England", "France", "Germany", "Bulgaria"],
    ["Dallas", "Austin", "Houston", "Atlanta"]
  ],
  answer: ["Egypt", "White", "France", "Dallas"]
};
console.log(game.answer[0])


$('#question').text(game.questions[0]);
$('#answer0').text(game.answers[0][0]);
$('#answer1').text(game.answers[0][1]);
$('#answer2').text(game.answers[0][2]);
$('#answer3').text(game.answers[0][3]);

$( "#answer0" ).on( "click", function() {
  if ($('#answer0:contains(game.answer[0])').length) {
      alert("Correct!");
      game.correct++;
  }
});
$( "#answer1" ).on( "click", function() {
  if ($('#answer1:contains(game.answer[0])').length) {
      alert("Correct!");
      game.correct++;
  }
});
$( "#answer2" ).on( "click", function() {
  if ($('#answer2:contains(game.answer[0])').length) {
      alert("Correct!");
      game.correct++;
  }
});
$( "#answer3" ).on( "click", function() {
  if ($('#answer3:contains(game.answer[0])').length) {
      alert("Correct!");
      game.correct++;
  }
});

在这种情况下,当我单击埃及时,它应该会触发,但它不是。

看起来您有两个直接的问题:

if ($('#answer0:contains(game.answer[0])').length) {
在这里,您正在查找一个元素,该元素实际上包含文本游戏。回答[0]。您可能希望使用该变量的实际值,因此可以执行以下操作:

if ($(`#answer0:contains('${game.answer[0]}')`).length) {
这将使用反勾号而不是单引号包围字符串,因此可以使用${variable}在字符串内部插入变量

其次,您总是在每个if语句中查找答案[0],例如,您可能希望使用正确的索引

if ($(`#answer1:contains('${game.answer[1]}')`).length) {

您还错误地认为您的点击没有触发。它们正在触发,但您的if语句条件未得到满足。在console.log中添加一些日志记录可以帮助您了解将来的情况。

只需更改代码,它就可以正常工作。或者使用字符串文字

if ($('#answer0:contains('+game.answer[0]+')').length) {
  alert("Correct!");
  game.correct++;
}

好的,你对第一部分完全正确。然而,当我点击埃及时,警报仍然没有显示。你的第二部分我不太明白,如果我在数组中查找第一项,索引0不是正确的吗?