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

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

  1. 名称为“完成”
  2. 发送的日期与“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()

标签: javascript jquery getelementsbytagname getelementsbyclassname


【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-12
      • 1970-01-01
      • 2021-03-11
      • 1970-01-01
      相关资源
      最近更新 更多