2013-04-07 59 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