Javascript 在整个会话中保持选中复选框

Javascript 在整个会话中保持选中复选框,javascript,jquery,html,checkbox,session-storage,Javascript,Jquery,Html,Checkbox,Session Storage,我有一个表格,我可以在其中选中复选框,它将记录行中的所有内容。页面上有一些搜索功能和其他按钮,因此我希望使用会话存储能够保留在刷新过程中选中的所有复选框,直到页面关闭。我从我找到的一个例子中得到了一些东西,但它似乎不起作用。我怎样才能解决这个问题 带有复选框的表格列/行的HTML: <td class="ui-widget-content"><input type="checkbox" class="check" name="check" id="checkid"><

我有一个表格,我可以在其中选中复选框,它将记录行中的所有内容。页面上有一些搜索功能和其他按钮,因此我希望使用会话存储能够保留在刷新过程中选中的所有复选框,直到页面关闭。我从我找到的一个例子中得到了一些东西,但它似乎不起作用。我怎样才能解决这个问题

带有复选框的表格列/行的HTML:

<td class="ui-widget-content"><input type="checkbox" class="check" name="check" id="checkid"></td>
看看这个:

var test = sessionStorage.input === 'false'? true: false;
那么这意味着什么呢?如果
sessionStorage.input
false,则返回true,否则返回false

因此,当您选中复选框时,它被设置为true,这是由上述逻辑决定的,因为它不是false-测试被评估为
false

解决方案:

var test = sessionStorage.input === 'true';
如果会话也为,则这会将测试设置为

您还可以更改
$('input').prop('checked',test | | false)至:

$('input').prop('checked', test);
| false
是不必要的。或者更好/更短:

$('input').prop('checked', sessionStorage.input === 'true');
然后您根本不需要
test
变量

至于您的问题“我如何才能使单个复选框起作用”:您可以使用复选框
id
,例如:

// save the individual checkbox in the session inside the `change` event, 
// using the checkbox "id" attribute
var $el = $(this);
sessionStorage[$el.prop('id')] = $el.is(':checked');
然后,刷新页面时:

$(':checkbox').each(function() {
    // Iterate over the checkboxes and set their "check" values based on the session data
    var $el = $(this);
    $el.prop('checked', sessionStorage[$el.prop('id')] === 'true');
});
这就是它的样子:

$(function(){
    $('input:checkbox').each(function() {
        // Iterate over the checkboxes and set their "check" values based on the session data
        var $el = $(this);
        $el.prop('checked', sessionStorage[$el.prop('id')] === 'true');
    });

    $('input:checkbox').on('change', function() {
        // save the individual checkbox in the session inside the `change` event, 
        // using the checkbox "id" attribute
        var $el = $(this);
        sessionStorage[$el.prop('id')] = $el.is(':checked');
    });
});
-无法使用堆栈代码段,因为由于安全限制,它不支持会话存储。

请查看以下内容:

var test = sessionStorage.input === 'false'? true: false;
那么这意味着什么呢?如果
sessionStorage.input
false,则返回true,否则返回false

因此,当您选中复选框时,它被设置为true,这是由上述逻辑决定的,因为它不是false-测试被评估为
false

解决方案:

var test = sessionStorage.input === 'true';
如果会话也为,则这会将测试设置为

您还可以更改
$('input').prop('checked',test | | false)至:

$('input').prop('checked', test);
| false
是不必要的。或者更好/更短:

$('input').prop('checked', sessionStorage.input === 'true');
然后您根本不需要
test
变量

至于您的问题“我如何才能使单个复选框起作用”:您可以使用复选框
id
,例如:

// save the individual checkbox in the session inside the `change` event, 
// using the checkbox "id" attribute
var $el = $(this);
sessionStorage[$el.prop('id')] = $el.is(':checked');
然后,刷新页面时:

$(':checkbox').each(function() {
    // Iterate over the checkboxes and set their "check" values based on the session data
    var $el = $(this);
    $el.prop('checked', sessionStorage[$el.prop('id')] === 'true');
});
这就是它的样子:

$(function(){
    $('input:checkbox').each(function() {
        // Iterate over the checkboxes and set their "check" values based on the session data
        var $el = $(this);
        $el.prop('checked', sessionStorage[$el.prop('id')] === 'true');
    });

    $('input:checkbox').on('change', function() {
        // save the individual checkbox in the session inside the `change` event, 
        // using the checkbox "id" attribute
        var $el = $(this);
        sessionStorage[$el.prop('id')] = $el.is(':checked');
    });
});

-无法使用堆栈片段,因为由于安全限制,它不支持会话存储。

可能重复不确定…我进行了编辑…现在应该是这样吗?@Rataiczak24 Thy,并发现:)它将记录值“true”现在,它不会在刷新后保持任何复选框处于选中状态。测试变量的三元值似乎是向后的。编辑:按原样,测试永远不会为空,因此| | false部分很奇怪。EDIT2:您只需执行
this.checked=true/false'
,无需通过jquery即可访问该对象属性。不确定的可能重复项…我进行了编辑…现在应该是这样吗?@Rataiczak24 Thy并发现:)它将记录值“true”现在,它不会在刷新后保持任何复选框处于选中状态。测试变量的三元值似乎是向后的。编辑:按原样,测试永远不会为空,因此| | false部分很奇怪。EDIT2:您只需执行
this.checked=true/false'
,无需通过jquery即可访问该对象属性。好吧,亲爱的!这似乎有效!唯一的另一个问题是,我如何才能使这项工作的个人复选框?现在,如果我选择一个或取消选择一个,它会选择/取消选择所有我使用你的代码将我的JS代码更新为我现在拥有的代码…让我知道它是否正确,因为现在我仍然拥有issue@Rataiczak24否-接受
$(':checkbox')。每个(函数(){..})
并将其替换为
var test=sessionStorage.input=='true'和下一行(
$('input').prop('checked',test);
)完美!非常感谢你!绝对地谢谢,亲爱的!这似乎有效!唯一的另一个问题是,我如何才能使这项工作的个人复选框?现在,如果我选择一个或取消选择一个,它会选择/取消选择所有我使用你的代码将我的JS代码更新为我现在拥有的代码…让我知道它是否正确,因为现在我仍然拥有issue@Rataiczak24否-接受
$(':checkbox')。每个(函数(){..})
并将其替换为
var test=sessionStorage.input=='true'和下一行(
$('input').prop('checked',test);
)完美!非常感谢你!绝对地谢谢