如何将列表中所有选中的项目存储到本地存储中。(Javascript)

绒毛

我有一个带有动态创建的复选框输入的列表,当列表完成并且您完成使用它时,我想将列表中选中的项目存储到 localstorage。

(按下保存按钮时,我只需要存储选中的项目。)

HTML:

<template id = "index.html">
                <ons-page id=tab1>
                <div id="listac">LISTA</div>
                <ons-list id="products">
                    <!-- HERE IS WHERE I ADD THE CHECKBOX ITEMS-->
                </ons-list>

                <ons-speed-dial position="bottom right" direction="left">
                <ons-fab>
                  <ons-icon icon="fa-cog"></ons-icon>
                </ons-fab>
                <ons-speed-dial-item ONCLICK="savefunction()"> <!--THIS IS THE BUTTON THAT "SAVES".-->
                  <ons-icon id = "consolidar"  icon="fa-cart-arrow-down"></ons-icon>
                </ons-speed-dial-item>
                <ons-speed-dial-item >
                  <ons-icon id = "anadir" icon="fa-plus" ></ons-icon>
                </ons-speed-dial-item>
                </ons-speed-dial>

                </ons-page>
            </template>

JS:

function add_checkbox_item(){

  var product = document.getElementById('addirp').value;
  var text_product = document.createTextNode(product);
  var checkbox_product = document.createElement('ons-checkbox')
  checkbox_product.appendChild(text_product);
  var finall_product = document.createElement('ons-list-item');
  finall_product.appendChild(checkbox_product);
  finall_product.classList.add("products");

  document.getElementById('productos').appendChild(finall_product);

  dialog = document.getElementById('dialog1'); 
  dialog.hide();  

}; 

function savefunction(){
  // HERE IS WHERE I START GETTING LOST

  var checkedValue = null; 
  var inputElements = document.getElementsByClassName('products');
  for(var i=0; inputElements[i]; ++i){
    if(inputElements[i].checked){
      checkedValue = inputElements[i].value;
      break;  
    }
  }
}
大卫

您需要做的是查询所有复选框元素并遍历它们。您的代码当前选择ons-list-item元素而不是复选框。

首先,让函数选择正确的元素:

function savefunction(){
  var checkboxes = document.querySelectorAll('.products'); // <-- select the checkboxes
  for (var i = 0; i < checkboxes.length; i += 1) { // <-- iterate
    if (checkboxes[i].checked) {
      // store values  
    } else { // <-- this branch is optional (I don't know if you need it)
      // remove previously stored values
    }
  }
}

如您所见,我还添加了一个else分支,以防您还想在用户取消选中先前选中的复选框删除先前存储的值但是,如果您不需要它,只需删除分支即可。else

从这里开始,你有两种可能性:你可以要么单独存储每个选中的复选框进入localStorage或者你可以存储所有的列表中选中的复选框。

每个盒子分开 else如果你不需要,记得把分支去掉

function savefunction(){
  var checkboxes = document.querySelectorAll('.products');
  for (var i = 0; i < checkboxes.length; i += 1) {
    if (checkboxes[i].checked) {
      localStorage.setItem(checkbox[i].name, checkbox[i].value); // <-- stores a value
    } else {
      if (localStorage.getItem(checkbox[i].name)) { // <-- check for existance
        localStorage.removeItem(checkbox[i].name); // <-- remove a value
      }
    }
  }
}

所有框的列表

function savefunction(){
  var checkboxes = document.querySelectorAll('.products');
  var checked = {};
  for (var i = 0; i < checkboxes.length; i += 1) {
    if (checkboxes[i].checked) {
      checked[checkbox[i].name] = checkbox[i].value;
    }
    // <-- no need for else, because we simply override
  }
  localStorage.setItem('checked_boxes', JSON.stringify(checked)); // <-- localStorage can only store `String` values
}

使用第二种方法时,不要忘记JSON.parse在要使用它们时调用存储的值(这仅用于演示目的):

function restoreCheckboxes (checkboxElements) {
  var checkboxStates = localStorage.getItem('checked_boxes'),
      i;
  if (checkboxStates) {
    checkboxStates = JSON.parse(checkboxStates); // <-- parse string to object
    for (i = 0; i < checkboxElements.length; i += 1) {
      if (checkboxStates.hasOwnProperty(checkboxElements[i].name)) {
        checkboxElements[i].checked = true;
      }
    }
  }
}

另一点是:您想在不同会话之间保留该信息还是只要当前会话处于活动状态如果后者为真,请考虑使用sessionStorage代替localStorage您可以在 MDN 上阅读它们的差异

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将Firebase存储项目存储到本地缓存中以节省带宽成本?

来自分类Dev

如何将输入多次存储到本地存储中

来自分类Dev

我们如何将列表中的所有项目从模型类存储库传递到控制器,然后进行查看?

来自分类Dev

如何将所有选中的复选框类名称存储在数组中?

来自分类Dev

如何从本地存储返回所有项目?

来自分类Dev

如何将找到的每个项目的链接存储到列表中?

来自分类Dev

将指定文件夹中所有文件夹的名称而不是路径存储到列表中?

来自分类Dev

如何使用纯Javascript将选中的单选按钮的值存储在本地存储中?

来自分类Dev

如何将具有相同后缀的所有文件存储到表中?

来自分类Dev

如何将所有CustomListView项目存储在数组中

来自分类Dev

如何将输入文件中列的所有值存储在列表中

来自分类Dev

如何将“空格”字符存储到列表中

来自分类Dev

如何将输出存储到矩阵列表中

来自分类Dev

Python-如何将if条件中的值存储到带有追加的列表中

来自分类Dev

如何将RotatedRect中的所有像素存储到另一个矩阵?

来自分类Dev

如何将所有JSON记录存储到SQLite中

来自分类Dev

如何将所有链接存储到变量中,同时允许分别读取它们?(Python)

来自分类Dev

如何将tmux会话的所有Windows配置存储到文件中

来自分类Dev

如何将所有 ArrayList<ArrayList<String>> 值存储到 ArrayList<String> 中?

来自分类Dev

如何将本地git存储库中的所有远程分支转换为本地跟踪分支

来自分类Dev

如何将所有edittext值存储在数组列表中

来自分类Dev

如何将特定数据存储到带有类的列表中

来自分类Dev

如何将特定数据存储到带有类的列表中

来自分类Dev

如何将JSON数据存储和检索到本地存储中?

来自分类Dev

如何将这三个变量存储到本地存储中?

来自分类Dev

如何将多个表单数据值存储到本地存储中的单个键

来自分类Dev

如何将 BeautifulSoup 结果中的 URL 存储到列表,然后再存储到表

来自分类Dev

如何提取Stash或Bitbucket中所有存储库的列表?

来自分类Dev

如何将所有字典存储在数组中

Related 相关文章

  1. 1

    如何将Firebase存储项目存储到本地缓存中以节省带宽成本?

  2. 2

    如何将输入多次存储到本地存储中

  3. 3

    我们如何将列表中的所有项目从模型类存储库传递到控制器,然后进行查看?

  4. 4

    如何将所有选中的复选框类名称存储在数组中?

  5. 5

    如何从本地存储返回所有项目?

  6. 6

    如何将找到的每个项目的链接存储到列表中?

  7. 7

    将指定文件夹中所有文件夹的名称而不是路径存储到列表中?

  8. 8

    如何使用纯Javascript将选中的单选按钮的值存储在本地存储中?

  9. 9

    如何将具有相同后缀的所有文件存储到表中?

  10. 10

    如何将所有CustomListView项目存储在数组中

  11. 11

    如何将输入文件中列的所有值存储在列表中

  12. 12

    如何将“空格”字符存储到列表中

  13. 13

    如何将输出存储到矩阵列表中

  14. 14

    Python-如何将if条件中的值存储到带有追加的列表中

  15. 15

    如何将RotatedRect中的所有像素存储到另一个矩阵?

  16. 16

    如何将所有JSON记录存储到SQLite中

  17. 17

    如何将所有链接存储到变量中,同时允许分别读取它们?(Python)

  18. 18

    如何将tmux会话的所有Windows配置存储到文件中

  19. 19

    如何将所有 ArrayList<ArrayList<String>> 值存储到 ArrayList<String> 中?

  20. 20

    如何将本地git存储库中的所有远程分支转换为本地跟踪分支

  21. 21

    如何将所有edittext值存储在数组列表中

  22. 22

    如何将特定数据存储到带有类的列表中

  23. 23

    如何将特定数据存储到带有类的列表中

  24. 24

    如何将JSON数据存储和检索到本地存储中?

  25. 25

    如何将这三个变量存储到本地存储中?

  26. 26

    如何将多个表单数据值存储到本地存储中的单个键

  27. 27

    如何将 BeautifulSoup 结果中的 URL 存储到列表,然后再存储到表

  28. 28

    如何提取Stash或Bitbucket中所有存储库的列表?

  29. 29

    如何将所有字典存储在数组中

热门标签

归档