【问题标题】:How to keep the checkbox status after refreshing the page刷新页面后如何保持复选框状态
【发布时间】:2020-02-11 13:32:24
【问题描述】:

我已经查看了其他线程,但找不到任何东西。 我有一个复选框,它通过更改它的状态来隐藏一些表列,但是在每次刷新后它都会更改为初始状态(选中)并且这些列不再隐藏。 刷新后有什么办法保持状态吗?在这种情况下我可以应用本地存储吗?有没有办法在没有 jQuery 的情况下做到这一点? 下面是一些代码:

编辑:为本地存储添加了建议的功能

<script type="text/javascript">
function hide_show_table(col_name)
{
 var checkbox_val=document.getElementById(col_name).value;
 if(checkbox_val=="hide")
 {
  var all_col=document.getElementsByClassName(col_name);
  for(var i=0;i<all_col.length;i++)
  {
   all_col[i].style.display="none";
  }
  document.getElementById(col_name+"_head").style.display="none";
  document.getElementById(col_name).value="show";
 }

 else
 {
  var all_col=document.getElementsByClassName(col_name);
  for(var i=0;i<all_col.length;i++)
  {
   all_col[i].style.display="table-cell";
  }
  document.getElementById(col_name+"_head").style.display="table-cell";
  document.getElementById(col_name).value="hide";
 }
}
</script>

<script>
window.onload = function() {
  const checkbox = document.getElementById('fdt_col');
  checkbox.checked = !!localStorage.getItem('checked');
  checkbox.addEventListener('change', function(){
localStorage.setItem('checked', this.checked);});
}
</script>


echo"<input type='checkbox' name='fdt_col' value='hide' id='fdt_col'
onchange='hide_show_table(this.id);' checked>some text</input><br/>";

谢谢

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    我看到您正在使用 Vanilla javascript,因此您可以像这样使用 localStorage

    window.onload = function() {
      const checkbox = document.getElementById('fdt_col');
      checkbox.checked = !!localStorage.getItem('checked');
      checkbox.addEventListener('change', function() {localStorage.setItem('checked', this.checked);});
    
    }
    

    注意 localStoragesessionStorage

    localStorage 会将您的项目保存在所有选项卡上,而 sessionStorage 将用于如果您需要在选项卡之间分隔

    【讨论】:

    • 我刚试过。我写了我的复选框的 id 而不是 bar,并称我的键为“checked”而不是“foo”。现在控制台说: SyntaxError: missing ) after argument list
    • 控制台现在显示:TypeError: checkbox is null。我现在添加了 if (typeof checked !== 'undefined')... 错误消失了,但刷新后我仍然得到初始状态
    • document.getElementById 必须传递一个字符串作为参数,所以你想:document.getElementById('fdt_col')
    • typeof checked !== 'undefined' 在这种情况下将始终返回 false。你可以在定义checkbox 之后创建这个if,但只有在你定义它之后
    • 我再次更新了我的答案以包含您的班级名称
    猜你喜欢
    • 2021-04-24
    • 2020-09-16
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 2014-04-03
    • 2016-06-02
    相关资源
    最近更新 更多