【问题标题】:Linking Table Cells to Checkboxes Javascript将表格单元格链接到复选框 Javascript
【发布时间】:2018-08-02 10:09:41
【问题描述】:

我有一组几个月的复选框,我还有一个包含每个月单元格的表格。单元格的“data-val”属性与复选框的“id”相同。我想在表格单元格中添加一个 onClick,以便在单击单元格时,只要选中表格单元格,就应该选中与单元格“data-val”具有相同“id”的复选框。

到目前为止,我已经成功地将 onClick 注册到表格单元格。但是,当单击单个单元格而不是相应的复选框时,会选中所有复选框。我该如何解决这个问题?

        function MonthCalCheck() {

        const checkboxMonthElement = document.querySelectorAll('.checkboxMonth');
        var cells = document.querySelectorAll('#Month_Table td');

        cells.forEach(f => f.addEventListener('click', event => {

            for (var x = 0; x < checkboxMonthElement.length; x++) {

                if (cells[x].getAttribute('data-val') == checkboxMonthElement[x].getAttribute('id')) {

                    checkboxMonthElement[x].checked = true;
                }   
            }
        }));


    }

    MonthCalCheck();

【问题讨论】:

    标签: javascript for-loop foreach onclick


    【解决方案1】:

    您使用的是forEach,而不是使用变量f 作为迭代中的当前元素,而是使用cells[x],在比较它们的数据值时确实等于checkboxMonthElement[x]

    cells[x] 替换为f

    【讨论】:

    • 我收到错误:Add:671 Uncaught TypeError: Cannot read property 'getAttribute' of undefined at HTMLTableCellElement.f.addEventListener.event 当我将单元格 [x] 更改为单元格 [f]
    • 你应该用f替换cells[x],如下f.getAttribute('data-val') == checkboxMonthElement[x].getAttribute('id') xf
    • 不敢相信我犯了那个错误。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多