2017-01-08 47 views
0

我有一個帶有NES遊戲標題的數據庫,我正在用附近的複選框顯示遊戲列表。這是一個庫存/跟蹤系統,所以如果你擁有這款遊戲,你可以選中這個盒子。複選框的ID爲'nes#',其中'#'是一個數字(例如,nes1,nes2,nes3 ..)。查找未經檢查的複選框的值

我已經能夠到目前爲止,獲得所有選中的複選框的列表,然後將id(複選框的值)保存到一個Javascript數組中。

因此,考慮到這一點,我想現在做相反的事情,並獲取所有未選中的複選框的列表,然後將該列表保存到數組中。認爲這很簡單。

總體目標是如果用戶沒有更長時間擁有該遊戲,則能夠從數據庫中刪除記錄。因此,在這種情況下,用戶將取消選中該框,然後點擊保存。點擊保存後,代碼會查看未檢查框/ ID列表,然後如果它存在於數據庫中,請將其刪除,因爲用戶不再擁有遊戲。

如果有更好的方法來做到這一點,那麼我也樂於接受建議。

這裏是代碼,我到目前爲止有:

  //CHECK FOR REMOVED ITEMS 
      var x = 1; 
      var nesGameIDsToRemove = new Array(); 

      //nesGameIDsToRemove = [].filter.call($('input[id^=nes]'), e => ! e.checked).map(e => e.value); 

      while (x <= <?php echo $nesCount; ?>){ 
      //check each NES checkbox 
      if (!$('#nes' + x).is(":checked")){ 
       console.log($('#nes' + x).val()); 
       nesGameIDsToRemove.push($('#nes' + x).val()); 
      } 
      x++; 
      } 

      for (var i = 0; i < nesGameIDsToRemove.length; ++i) { 
      console.log(i + ': ' + nesGameIDs[i]); 
      $.post('updateInventory.php', {'gameID': nesGameIDsToRemove[i], 'userID': <?php echo $profileID; ?>, 'mode': 2, 'console': "NES"}, function (response) { 
       $('#inventoryResults').html(response); 
      }); 
      } 

    //Break in code 

       <input type='checkbox' id='nes1' name='nes1' value='1'>10 Yard Fight(1)<br> 
<input type='checkbox' id='nes2' name='nes2' value='2'>1942(2)<br> 
<input type='checkbox' id='nes3' name='nes3' value='3'> ..... continued 
+1

請刪除PHP組件,一旦生成的HTML傳遞給客戶端,它們完全不相關;最重要的是發送給瀏覽器的最終JavaScript和HTML。 –

+0

好吧,留下我覺得是相關的,但。 – Retro

+0

我在聊天中給出的代碼適用於我:https://jsfiddle.net/2x0wugv6/這意味着錯誤可能在其他地方。嘗試學習調試,php和js,看看發生了什麼。如果你能縮小這個問題的範圍,那麼問題會更具體。 – Sheepy

回答

0

由於阿赫亞注意到,問題是,我是引用的代碼錯誤的數組,因此它被打破那裏。 「在代碼中注意到的一件事是」console.log(i +':'+ nesGameIDs [i])「行的數組名與前一個循環中填充的數組名不同,我不確定這是否是故意的。 Chetan Ranpariya 15分鐘前「

然後,它只是一個改變一些PHP代碼邏輯是倒退的問題。

謝謝大家。

0

您的查找不必要的複雜。只需要:

var nesGameIDsToRemove = $('input:not(:checked)').get().map(el=>el.id); 
相關問題