2015-05-31 44 views
0

我有jsp頁面,在這個頁面中我很少提出多項選擇題。所以我使用單選按鈕來顯示選項。如果語句不能識別變量中存儲的條件

現在我想寫一個JavaScript函數,爲所有字段進行強制檢查。 我的代碼看起來像這樣。

var lengh = document.getElementById("totalQues").value; 
for(i=1; i <= lengh; i++){ 
     var radioName= "radio"+i; 
     var radioQues = document.getElementsByName(radioName); 
     var concatS= ""; 
     for(j=0; j< radioQues.length; j++){ 
      concatS = concatS+"(radioQues["+j+"].checked == false)"; 
      concatS= concatS + " && "; 
     } 
     var sliced= concatS.slice(0, concatS.lastIndexOf("&&")); 
     if(sliced){ 
      msgid="Question "+i; 
      id="radio"+i; 
      check=false; 
      break; 
     } 
     if(check==false){ 
      alert("kopkopok the break part"); 

     } 
    } 

問題在於

var sliced= concatS.slice(0, concatS.lastIndexOf("&&")); 
     if(sliced){ 
      msgid="Question "+i; 
      id="radio"+i; 
      check=false; 
      break; 
     } 

我的if語句並不確定這是我存放在切片變量的條件。 請幫助....

+0

'slice()'返回一個數組,因此'sliced'永遠不會是'falsy'。如果你想檢查它是否包含任何值,請檢查'sliced'的'length'屬性。 – GillesC

+0

'string :: slice()'返回一個字符串,而不是一個數組。一個空字符串確實是虛假的,但我認爲OP實際上需要檢查字符串中表達式的真實性。 –

回答

0

它看起來像你試圖評價字符串

"(radioQues[1].checked == false) && (radioQues[2].checked == false) ..." 

,看看所描述的情況是真實的。比較字符串本身到false不會那樣做。更好地簡單地檢查按鈕,當你循環他們,尋找一個檢查。如果沒有找到,請提醒您:

var lengh = document.getElementById("totalQues").value; 

for (i = 1; i <= lengh; i++) { 
    var radioName = "radio" + i; 
    var radioQues = document.getElementsByName(radioName); 
    var any = false; 

    for (j = 0; j < radioQues.length; j++) { 
    if (radioQues[j].checked) { 
     any = true; 
     break; 
    } 
    } 

    if (!any) { 
    msgid = "Question " + i; 
    id = "radio" + i; 
    alert("kopkopok the break part"); 
    break; 
    } 
} 
+0

它爲我工作。非常感謝 –