【问题标题】:How to get cookies and do for each in a loop如何获取 cookie 并为每个循环执行
【发布时间】:2020-07-30 13:39:01
【问题描述】:

我需要为 cookie 中的每个名称创建一个 foreach 循环并再次选中复选框。

Cookies

document.cookie = "btnname=btnname1#btnname2#btnname3";
document.cookie = "otherstuff=...";

我试过了:

代码

str = ???
var btnname str.split("#");
btnname.forEach(function)
function(){
      document.getElementsByName(btnname).checked = true;
}

我不知道如何仅获取 btnname 值。我怎样才能得到那个值?

【问题讨论】:

  • 嗯,function 是保留字...另外,请发布有效的 JavaScript。

标签: javascript html cookies foreach


【解决方案1】:

如果需要正确解析字符串,首先需要获取等号(=)后面的部分。之后,只需按分隔符 (#) 分割即可。

获得所有名称后,找到该名称的元素。您可以通过其名称直接访问表单上的字段。

const cookieValue = 'btnname=btnname1#btnname2#btnname3';

const applyState = (form, value) => {
  const substr = value.substring(value.indexOf('=') + 1);
  substr.split(/#/g).forEach(id => form[id].checked = true);
};

applyState(document.forms.example, cookieValue);
<form id="example">
  <input type="checkbox" name="btnname1" />
  <input type="checkbox" name="btnname2" />
  <input type="checkbox" name="btnname3" />
  <input type="checkbox" name="btnname4" />
  <input type="checkbox" name="btnname5" />
</form>

或者,您可以按名称查询输入。

const applyState = (form, value) => {
  const substr = value.substring(value.indexOf('=') + 1);
  substr.split(/#/g).forEach(id => {
    form.querySelector(`input[name="${id}"]`).checked = true;
  });
};

【讨论】:

    猜你喜欢
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多