2015-08-27 31 views
1

我正在用軌道上的紅寶石進行匹配遊戲。我目前有一個顯示演員圖片的for循環,然後除了每個圖片之外,我還有一個選擇器,讓您可以選擇每個可能的演員名稱。我希望提交按鈕調用一個javascript函數(check_answers),該函數將檢查與名稱相比的演員的id(顯示誰的圖片)。對於每一個正確的比賽,你都會得到一個積分,表單動作會將你移到一個能夠顯示你的積分的新頁面(你有多少)。如何以一種形式訪問循環選擇器的多個變量?

我有一個提交按鈕是有意義的(因爲人應該填寫所有答案然後提交),但我不確定如何在一個答案中訪問每個答案的變量調用check_answers()。

<% actor_array = @actors.find_random_actors %> 

<script type="text/javascript"> 
    var points = 0 
    function check_answers(){ 
    for (i = 0; i < actor_array_json.length; i++) { 
     <!-- here I would want to compare whether the actor id is equal to the submitted id. Below it would have been iter.id == person.id --> 
     if(){ 
     points = points + 1; 
     } 
    } 
} 
    </script> 

    <table> 
    <tbody> 
     <form method="post" action="/scores">   
     <!-- for each actor in the array, display their picture --> 
     <% actor_array.each do |iter| %> 
     <tr> 
     <td><img src =<%= iter.file %> width = '200px', height = '200px'></td> 
     <td> 
      <select id="answer"> 
      <% actor_array.each do |person| %> 
      <option value=<%=person.id %>><%= person.name %></option> 
      <% end %> 
      </select> 
     </td> 
     </tr> 
    <% end %> 
    <tr><td> <!-- new row for the submit button --> 
    <input type="button" onclick="check_answers()" value="Submit"> 
    </td></tr> 

For you visual people, here'a picture.

回答

1

我覺得你應該爲您的select tag這樣

<select id="answer_<%= iter.id %>"> 

然後在你的腳本中,我們可以檢查(我使用jQuery,你可以改變Javascript如果需要):

for (i = 0; i < actor_array_json.length; i++) { 
    if ($('#answer_' + actor_array_json[i].id).val() == actor_array_json[i].id){ 
     points = points + 1; 
    } 
} 

但是,如果我們這樣做,用戶可以顯示您的HTML來知道答案。

+0

謝謝!這正是我最終這樣做的結果。 – chiefkikio