【问题标题】:How to select value/innerHTML of a certain <td> within a certain <tr>? Using Javascript only. No jQuery如何在某个 <tr> 中选择某个 <td> 的 value/innerHTML?仅使用 Javascript。没有 jQuery
【发布时间】:2016-10-26 06:27:34
【问题描述】:
<table>
  <tr>
    <td>foo1</td>
    <td>bar1</td>
    <td><input type="button" id="button1" onClick="get(this);"></td>
  </tr>
  <tr>
    <td>foo2</td>
    <td>bar2</td>
    <td><input type="button" id="button2" onClick="get(this);"></td>
  </tr>
</table>

目标: 让按钮button1button2 触发相同的function get(),这应该在按钮所在的&lt;tr&gt; 中获得第一个&lt;td&gt; 的值. 在这种情况下,分别是:foo1foo2

这是一个粗略的功能大纲,应该有助于理解我想要实现的目标-

function get(element){
  alert(element.tr.first_td.innerHTML);
}

我意识到有一个类似问题的 jQuery 解决方案。但我对 jQuery 的理解还不够好,无法将它翻译回 JavaScript。如果可以使用 JavaScript,请告诉我如何使用。

【问题讨论】:

    标签: javascript html html-table row


    【解决方案1】:

    向上爬parentNode 两次以到达tableRow 元素。从那里,从单元格的 HTMLCollection 中访问第一个 td,并获取 innerHTML 值:

    function find( element ) {
        alert( element.parentNode.parentNode.cells[0].innerHTML );
    }​
    

    小提琴:http://jsfiddle.net/jonathansampson/WuWnw/

    【讨论】:

    • 另一种方式可能是element.parentNode.previousSibling.previousSibling.innerHTML,还有别的吗? :-)
    • @FlorianMargaine 有很多方法:)
    • 没有那么多“有效”的方法。当然,我们不要回到身体再下来,但我相信你知道我的意思。
    【解决方案2】:

    试试这个,因为你有很多trtd标签,所以,你可以做DOM解析。但是您需要为该表指定一个ID 才能获取该表。现在让我们称之为foo-table

    var table = document.getElementById("foo-table");
    var cells = table.getElementsByTagName("td");
    for (var i = 0; i < cells.length; i++) {
        alert(cells[i].innerHTML);
    }
    

    如果您不想提供 ID,并且您确定只有一张桌子,请使用:

    var table = document.getElementsByTagName("table");
    var cells = table[0].getElementsByTagName("td");
    for (var i = 0; i < cells.length; i++) {
        alert(cells[i].innerHTML);
    }
    

    享受吧!希望这可以帮助! :) 没有jQuery 或任何其他插件。纯 JavaScript。 :)

    【讨论】:

      【解决方案3】:
      <table>
        <tr>
          <td id="button1_value">foo1</td>
          <td>bar1</td>
          <td><input type="button" id="button1" onClick="get('button1_value');"></td>
        </tr>
        <tr>
          <td id="button2_value">foo2</td>
          <td>bar2</td>
          <td><input type="button" id="button2" onClick="get('button2_value');"></td>
        </tr>
      </table>
      

      您应该使用 ID 确定您想要获取的内容,以便轻松检索它。这也有助于防止获得错误数据的机会。如果您给组件一个 id,您应该能够使用 document.getElementById() 来获取该组件。

      function get(element){
        var obj = document.getElementById(element)
        alert(obj.innerHTML);
      }
      

      【讨论】:

      • 高效。不过,它是一个 PITA,必须针对特定的 HTML。
      • 实际上该表将是动态的。因此,尽管身份验证是可能的,但我宁愿保持简单。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-04
      • 2018-11-16
      • 2012-11-11
      • 1970-01-01
      • 2015-01-03
      • 2019-06-13
      • 1970-01-01
      相关资源
      最近更新 更多