基于行中文本的Javascript复选框

时间:2016-07-19 04:14:30

标签: javascript jquery

我想转换这个:Select table row and check checkbox using JQuery

进入正常的javascript,因为我处于无法使用jquery的情况。

这是orignal

    $("table tr").each(function () {
    if ($(this).find("td:eq(1)").text().trim() == '2013-03-21') {
     $(this).find("input[type=checkbox]").attr("checked", true);
  }
});

这是我到目前为止所做的事情,我肯定已经离开了:

var elements = [].slice.call(document.querySelectorAll("table tr"));

Array.prototype.forEach(elements, function(){
var tdText = this.querySelectorAll("td").textContent
if (tdText == '2013-03-21') {
     this.querySelectorAll("input[type=checkbox]").setAttribute("checked", true);
  }
});

这是原始表:

<table>
    <tr>
        <td>Record1</td>
        <td>2013-03-21</td>
        <td>
            <input type="checkbox" />
        </td>
    </tr>
    <tr>
        <td>Record2</td>
        <td>2013-03-22</td>
        <td>
            <input type="checkbox" />
        </td>
    </tr>
    <tr>
        <td>Record3</td>
        <td>2013-03-21</td>
        <td>
            <input type="checkbox" />
        </td>
    </tr>
</table>

3 个答案:

答案 0 :(得分:0)

querySelectorAll()返回元素的nodeList。

您需要迭代这些并处理每个实例或使用您想要的索引:

element.querySelectorAll("td")[0]

答案 1 :(得分:0)

代码var tdText = this.querySelectorAll("td").textContent将返回未定义的textContent,因为您指的是tr的{​​{1}}。您可以遍历它,然后您可以获得NodeList的内容:

td

答案 2 :(得分:0)

  • 使用ElemCollection.forEach.call代替使用Array#slice.call,因为HTMLCollection没有forEach方法
  • [1]元素
  • 中选择文字时使用td索引 this中的
  • Array#forEach未引用element,使用first Array#forEach回调函数的item参数,array Array.prototype.forEach.call(document.querySelectorAll("table tr"), function(elem) { var tdText = elem.querySelectorAll("td")[1].textContent; if (tdText === '2013-03-21') { elem.querySelector("input[type=checkbox]").setAttribute("checked", true); } }); }}

<table>
  <tr>
    <td>Record1</td>
    <td>2013-03-21</td>
    <td>
      <input type="checkbox" />
    </td>
  </tr>
  <tr>
    <td>Record2</td>
    <td>2013-03-22</td>
    <td>
      <input type="checkbox" />
    </td>
  </tr>
  <tr>
    <td>Record3</td>
    <td>2013-03-21</td>
    <td>
      <input type="checkbox" />
    </td>
  </tr>
</table>
{{1}}