2013-04-07 62 views
0

数据我写了这个代码:如何存储与使用JavaScript对象

$(".awesome").click(function() { 
     var toStore = $("input[name=name]").val(); 
     if (/^[A-Za-z]+ [A-Za-z]+$/.test(toStore)) { 
      $("#contain").children().fadeOut(1000); 
      $("#contain").delay(1000).queue(function() { 
       $("#contain").append("<h1>Welcome to My Quiz : " + toStore + "</br>" + 
        "Youll Get 10 Questions To Answer </br> " + 
        "Here Is the First One:Who is Prime Minister of the United Kingdom? </h1>"); 

       var allQuestions = [ 
        {question: "Who is Prime Minister of the United Kingdom?", 
         choices: ["David Cameron", 
          "Gordon Brown", 
          "Winston Churchill", 
          "Tony Blair"], 
         correctAnswer: 0} 
       ]; 
       $("#contain").append("<form><input type='radio' name='ans1' value='David Cameron'>David Cameron</br>" + 
        " <input type='radio' name='ans1' value='Gordon Brown'>Gordon Brown</br>" + 
        "<input type='radio' name = 'ans1' value = 'Winston Churchill' > Winston Churchill </br>" + 
        "<input type='radio' name='ans1' value='Tony Blair'>Tony Blair</br>" + 
        "<input type='submit' value='Submit' name='submit'></form>"); 
       $("input[name=submit]").click(function() { 
        var correctAnswer; 
        if ($("input[name=ans1]").val()) { 
         var x = "choices"; 
         allQuestions[x] = "David Cameron"; 
         for (var x in allQuestions) { 
          return correctAmswer = false; 

          if (allQuestions[x] === "David Cameron") { 

           return correctAnswer = true; 
          } else { 
           return correctAnswer = false; 
          } 

         } 
        } 
       }); 
      }); 
     } else { 
      alert("You Must Put a Valid Name"); 
     } 
    }); 
}); 

现在你可以看到我有一个名为“allQuestions”的对象。 现在我有3个属性:“问题”,“选择”和“正确答案”。 然后我有一个提交按钮,如果你点击它,它会检查输入名称=“ans1”的值,然后循环对象“allQuestions”中的所有选项; 如果答案是“David Cameron”,我希望它将correctAnswer存储为1而不是0; 否则我不想存储correctAnswer并且它仍然为0,因为之后我有更多问题 。 任何建议如何做?

+0

您有一个“return correctAmswer = false;”在你的for ... in循环开始。这是打算吗? _assigns_值为'false'以纠正错误,然后返回'false'值,但correctAnswer不会保留其值。 – 2013-04-07 05:31:48

+0

不,它没有打算写我的correctanmswer,但从这里的代码:for(var x in allQuestions){ return correctAmswer = false; if(allQuestions [x] ===“David Cameron”){ return correctAnswer = true;其他{ return correctAnswer = false; }在我看来似乎是一个很好的解决方案。或者我是wrog,即时做得很好? – 2013-04-07 05:51:13

回答

1
  • 的第一个问题是,如果您注册事件处理程序被添加的元素之前直接事件处理不符合动态添加元素的工作。你的情况,我认为它的作品,因为你添加元素后注册你的事件处理程序。但是,你应该将其更改为:

    $( “#含有”)上( “点击”, “输入[名称=提交]”,函数(){你的函数})

  • 第二个问题是因为它是一个数组,所以你访问你的所有问题的方式是不正确的。它应该是:allQuestions [0] [x];

  • @Benjamin Gruenbaum提到的第三个问题。

+0

你能否请进一步解释whatQuestions [0] [x]的作用?当我把它放在console.log中时,我发现它是我的一个选择。这意味着包含= [“大卫卡梅伦”,“戈登布朗”,“温斯顿丘吉尔”,“托尼布莱尔”]我需要做一个in循环allQuestions [0] [x]检查输入的名称值= “ans1”是“David Cameron”? – 2013-04-07 06:09:35

+0

allQuestions [0] [x]表示:访问第一个问题(索引= 0)并获取属性[x]。在你的情况下:x =选择 – 2013-04-07 06:19:56