2012-12-28 33 views
0

我正在創建一個類似調查的頁面。我使用了三個基本的javascript函數,goNext(i),它隱藏了某個div標籤,並顯示下一個,goPrevious(i),它們幾乎相同但向後,並且answerExists(questionNumber)檢查是否所有單選按鈕都被選中。從我創建的點answerExists(), goNext(),我也想goPrevious()也停止響應。也許這與onsubmit()函數有關,但我無法弄清楚。這是JavaScript的功能:onclick()行動沒有迴應

function goNext(i) { 
    document.getElementById("div" + i).style.display = 'none'; 
    document.getElementById("div" + (i + 1)).style.display = 'block'; 
} 

function goPrevious(i) { 
    document.getElementById("div" + i).style.display = 'none'; 
    document.getElementById("div" + (i - 1)).style.display = 'block'; 
} 

function checkAnswers(questions) { 
    var answers = new Array(questions); 
    for(var i = 1; i <= questions; i++){ 
    answers[i-1] = false; 
    var radio = document.getElementsByClassName('Radio' + i); 
    for (var j=0; j < radio.length; j++) { 
     if(radio[j].checked == true) 
     alert(radio[j].value)answers[i-1] = true; 
    } 
    for (var i = 0; i < questions; i++){ 
     if(answers[i] == false){ 
     alert("Please answer all questions."); 
     return false; 
     } 
    } 
    return true; 
} 

這是HTML表單:

<form id="content" action="getresults.jsp" method="post" onsubmit="return checkAnswers(2);"> 
    <div id="div1" style="display: block;"> 
     <strong>1. Question 1</strong><br><br>&nbsp;&nbsp; 
     <input id="radio1" class="radio1" name="radio1" onclick="if (this.__chk) this.checked = false" onmousedown="this.__chk = this.checked" type="radio" value="Answer1" /> 
     Answer1<br><br><br><br> 
     <div class="auto-style1"> 
      <input name="next" onclick="goNext(1);" type="button" value="Next" /> 
     </div> 
    </div> 
    <div id="div2" style="display: none;"> 
     <strong>2. Question 2</strong><br><br>&nbsp;&nbsp; 
     <input id="radio2" class="radio2" name="radio2" onclick="if (this.__chk) this.checked = false" onmousedown="this.__chk = this.checked" type="radio" value="Answer 2" /> 
     Answer 2<br><br>&nbsp;&nbsp; 
     <input id="radio2" class="radio2" name="radio2" onclick="if (this.__chk) this.checked = false" onmousedown="this.__chk = this.checked" type="radio" value="dfgdgfdgf" /> 
     dgfgddgf<br><br><br><br> 
     <div class="auto-style1"> 
      <input name="previous" onclick="goPrevious(2);" type="button" value="Previous" />&nbsp; 
      <input name="submit" type="submit" value="Submit" /> 
     </div> 
    </div> 
</form> 

它實際上是所有動態創建的,但儘管如此,它的工作之前,我添加了checkAnswers()功能。

+0

究竟是什麼問題? – WEFX

回答

3

問題是您的checkAnswers函數中有語法錯誤,並且解釋器會丟棄任何包含語法錯誤的腳本,因此您所有其他函數也會被丟棄。

這是兩個語法錯誤:

  • alert(radio[j].value)answers[i-1] = true;是不是一個有效的語句。 (我猜你打算刪除alert(radio[j].value)部分,但突出顯示了錯誤的東西?)
  • 你有更多的左花括號{比右花括號}

一旦你解決這兩個問題,腳本應該至少運行(雖然你可能仍然有一些調試做)。

1

你打電話給一個2 as參數的checkAnswers,並用它構建一個數組。 ????

下面的代碼會顯示錯誤。

try{ 
    //your code 
}catch(er){ 
    alert(er); 
} 
0

我想回答你一步一步....

1)爲什麼你真的需要檢查所有問題的答案是否進行檢查? 我問你這個,因爲單選按鈕默認會選擇一個選項......或者你可以爲某個特定的選項製作一個「主動」的東西......通過這樣做,你實際上不需要檢查是否所有的問題都得到了回答...因爲默認情況下選擇了一個答案...

2)點擊事件不起作用,因爲它似乎沒有任何「id」輸入標籤「下一個」,「上一個」,「提交」 ...有每個單獨的ID,並通過使用jquery捕獲該特定標記的點擊事件...

例如。對下一<input id="next">

$("#next").click(function() { 
    //perform the action you need 
    } 

一個id這樣做對所有點擊事件....

3)最後...不使用的輸入標籤你想點擊的元素...嘗試使用按鈕標籤...

希望它能幫助你:)...