2011-09-15 18 views
0

ボタンをクリックすると、セットが選択されず、チェックボックスが選択されていない場合、アラートウィンドウには両方のメッセージが表示されますが、現時点では最初に "すべてのボックスをチェックしてください"というメッセージが表示されます。何が間違っていますか、ありがとう!アラートが完全に表示されない

$('#movetoset').click(function() { 
    var fail = ""; 

    if ($('#selectsett').val() === 'General') { 

     fail = "Please chooose a set.\n"; 
    } 

    for (j = 0; j < array_str_idnum.length; j++) { 
     if (document.getElementById('check' + array_str_idnum[j]).checked) { 
      document.getElementById('imagediv' + array_str_idnum[j]).style.display = 'none'; 
      // (Add to database here?) 
      array_str_idnum[j] = 'flag_gone'; // for example    
     } 


     if (document.getElementById('check' + array_str_idnum[j]).checked == false) { 
      fail = "Please check all the box.\n"; 
     } 

    } 
    flag = false; 

    for (j = 0; j < array_str_idnum.length; j++) { 

     if (array_str_idnum[j] == 'flag_gone') { 
      flag = flag && true; 
     } 
     else { 
      flag = false 
     } 

    } 
    if (flag == true) { 
     $('#steptwo').hide(); 
     $('#begin').fadeIn(); 
    } 

    if (fail == "") { 
     return true; 
    } else { 
     alert(fail); 
     return false; 
    } 
}); 

答えて

4
あなたが上書きするのではなく、 +=fail変数に追加する必要が

/それを再割り当て:

// Before anything else, initialize: 
var fail = ""; 

// Later... 
// First error: 
fail += "Please chooose a set.\n"; 

// Later still... 
fail += "Please check all the box.\n"; 
0

(彼らは別のラインにしているので、途中で「\ nを」付き)あなたはfailに両方の時間を割り当てる代わりに、文字列を連結するので。

コードを1行ずつ歩いて、と正確にはを書き留めて、各ステップで何が起きているのかを練習したいかもしれません。

flagを扱うループがあなたの意図することをするのかどうかもわかりませんが、あなたのコードはちょっと難しいと思います。

+0

おかげで、助けを解決し、感謝! – tony

+0

いいえ汗::) –