2015-05-31 45 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

它为我工作。非常感谢 –