根据多个表格单元格条件选中复选框

Posted

技术标签:

【中文标题】根据多个表格单元格条件选中复选框【英文标题】:Check checkbox based on multiple table cell criteria 【发布时间】:2017-01-28 23:45:03 【问题描述】:

我有一个充满数据的 html 表,第一列包含一个输入复选框和一个名称。当满足两个条件时,我想选中此复选框:

    名称为“完成” 发送的日期与“m/d/yyyy”中传递的字符串匹配,即“9/20/2016”(无前导零)

我已经可以使用 getElementByTagName("input") 做第一个并检查它是否是一个复选框并且名称是否完整

        function checkAllComplete()
        
            var allRows = document.getElementsByTagName("input");
            for (var i=0; i < allRows.length; i++) 
                if (allRows[i].type == "checkbox" && allRows[i].name == "complete") 
                
                    allRows[i].checked = true;
                
            
        

单元格中的日期是“9/20/2016 4:02:03 PM”。我也有我想使用的正则表达式来将它放入 m/d/yyyy:

var myRe = new RegExp("^([1-9]|1[012])\/([1-9]|[12][0-9]|3[01])\/(19|20)[0-9]2", "g");

但我无法获取相应的 td 和它的文本。我尝试了一个 getElementsByClassName 但由于还有其他输入项,所以计数已关闭。我尝试为复选框使用类名,但后来我无法检查它们。

我已经为所有 tds 分配了一个类,带有复选框的第一列是“actionClass”,带有日期字符串的是“dateSentClass”

我愿意接受 javascript 或 jquery 作为解决方案。

编辑:这是一个带有示例表结构的小提琴https://jsfiddle.net/trueimage/4u87euz5/2/

【问题讨论】:

你能提供一个表结构的例子吗? sn-p/jsfiddle 会很棒。 按班级选择应该得到日期。那不行吗?代码看起来像 $('.dateSentClass').val() 【参考方案1】:

要获取复选框,您可以使用:

document.querySelectorAll('input[type=checkbox]');

或:

jQuery('input[type=checkbox]');

您可以使用以下方法获取 tds 数组:

document.querySelectorAll('td.yourClass');

然后您可以调用innerHTMLtextContent 以将td 的内容作为字符串获取。

你也可以使用:

jQuery('td.yourClass');

并在每个元素上调用.text() 以获取 td 的内容。

【讨论】:

【参考方案2】:

听起来您正在尝试获取与包含由allRows[i] 表示的input 的单元格位于同一行的td.dateSentCell 单元格的文本。如果这是正确的,你可以使用这个 jQuery:

var dateText = $('td.dateSentCell', $(allRows[i]).parent().parent()).text();

【讨论】:

以上是关于根据多个表格单元格条件选中复选框的主要内容,如果未能解决你的问题,请参考以下文章

如果选中复选框,则更改下一个工作表上单元格的单元格颜色

滚动后表格视图单元格获取初始值

Swift - 处理表格视图多个部分的自定义复选标记按钮状态

如何在单元格渲染后检查表格视图上的复选标记图标(附件视图)?

WPF:选中/取消选中位于gridview单元格模板中的复选框的所有复选框?

根据 Google 表格中的第一个单元格格式化列中的单元格