javascript - 使用选中的框删除存储在本地内存中的项目 Jquery

标签 javascript jquery arrays local-storage

我将项目存储在数组中,然后将数组存储在本地内存中。

我正在将项目打印到屏幕上,以便用户查看每个项目上附加的复选框。

我允许用户像这样清除 localStorage 中的所有项目,

$('#clear').click( function() {
window.localStorage.clear();
location.reload();
return false;
});

我想允许用户清除他们想要的任何一个复选框。如何实现一个函数来从数组中删除选定的复选框项目。

$(document).ready(function () {
localArray = [];

loadKeyWords();

function loadKeyWords() {
    $('#keyWords').html('');
    localArray = JSON.parse(localStorage.getItem('keyWords'));
    for(var i = 0; i < localArray.length; i++) {
      $('#keyWords').prepend('<li><input id="check" name="check" type="checkbox">'+localArray[i]+'</li>'); 
        }
    }

$('#add').click( function() {
   var Description = $('#description').val();
  if($("#description").val() === '') {
    $('#alert').html("<strong>Warning!</strong> You left the to-do empty");
    $('#alert').fadeIn().delay(1000).fadeOut();
    return false;
   }
   $('#form')[0].reset();
   var keyWords = $('#keyWords').html();
   localArray.push(Description);
   localStorage.setItem('keyWords', JSON.stringify(localArray));
   loadKeyWords();
   return false;
});

if(localStorage.getItem('keyWords')) {
$('#keyWords').JSON.parse(localStorage.getItem('keyWords'));
}

$('#clear').click( function() {
window.localStorage.clear();
location.reload();
return false;
});

$('#clearChecked').click( function() {
    if ($(this).is(':unchecked')) {
      localArray.push($(this).val());
    }
    else {
      if ((index = localArray.indexOf($(this).val())) !== -1) {
                    localArray.splice(index, 1);
    }
       $('#form')[0].reset();
   var keyWords = $('#keyWords').html();
   localArray.push(Description);
   localStorage.setItem('keyWords', JSON.stringify(localArray));
   loadKeyWords();
   window.location.reload();
   return false;
          }
    });
}); // End of document ready function

我的 HTML

<!doctype html>
<html>
  <head>
    <title>Wuno Zensorship</title>
    <script src="jquery-1.11.3.min.js"></script>
        <script src="popup.js"></script>
    <link rel="stylesheet" type="text/css" href="styles.css">
  </head>
  <body>
    <img src="icon48.png">

 <section>
<form id="form" action="#" method="POST">
<input id="description" name="description" type="text" />
<input id="add" type="submit" value="Add" />
<button id="clearChecked">Clear Checked Items</button>
<button id="clear">Clear All</button>
</form>
<div id="alert"></div>
<ul id="keyWords"></ul>
</body>
</html>

最佳答案

您应该迭代 ul寻找 li元素 checkbox已选中,然后将它们从 localArray 中删除。试试这个:

$('#clearChecked').click( function() {
    $('#keyWords > li > input:checked').each(function(){
      var desc = $(this).parent().text();
      var index = localArray.indexOf(desc);
      localArray.splice(index, 1);
    });
    ...
});

关于javascript - 使用选中的框删除存储在本地内存中的项目 Jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34460673/

相关文章:

javascript - 使用 Webpack 包含 HTML 部分

javascript - peerjs webrtc调用响应

javascript - 如何将 (000) 000 - 0000 的电话号码格式化为国际电话格式

jquery - .keyup 或 .change 事件触发 jquery 中的只读字段?

javascript - 更改 Kendo Grid 列绑定(bind)

javascript - 动态单选按钮未出现在 IE 中

c - 随机对角二维数组输入

javascript - 具有重复结构的数组

javascript - 在 Javascript 中实现 Keybase 的 HMAC-SHA256

javascript - 如何更新 Json 对象数组中的一个字段?