2011-09-15 65 views
0

這是我的javascript代碼,當我點擊按鈕時,如果沒有選擇任何設置並且沒有標記複選框,則警報窗口應該顯示這兩個消息,但目前它只顯示第一個是「請檢查所有的盒子」,我做錯了什麼,謝謝!警報並未完全顯示

$('#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

因爲分配給fail兩次,而不是連接字符串(在中間所以他們在不同線路上一個「\ n」)。

您可能需要練習「玩電腦」,逐行瀏覽您的代碼,正好寫下每一步都會發生什麼。

我也不確定你的循環處理flag會做你想要的,但說實話,我覺得你的代碼有點難以遵循。

+0

感謝,解決了,感謝您的幫助! – tony

+0

沒有汗水:) ... –