【问题标题】:Select sibling th from td (horizontal row heading) with javascript使用javascript从td(水平行标题)中选择兄弟th
【发布时间】:2016-01-05 10:59:47
【问题描述】:

我试图在同一个 tr 中引用与 td 相关的 th,不幸的是,标题和类不对应,所以我不能只创建另一个 .each 循环。

我已经尝试过调整这个answer,它引用了一个垂直标题,但没有成功。

感谢大家的帮助。


示例行

<tr>
<th id="row_51_18" class="level3 levelodd item b1b column-itemname" colspan="1"><a title="Link to Quiz activity" href="http://virtualmedics.org/mod/quiz/grade.php?id=93&amp;itemnumber=0&amp;userid=18"><img class="icon itemicon" alt="Quiz" title="Quiz" src="http://virtualmedics.org/theme/image.php?theme=vmelegance&amp;amp;component=quiz&amp;amp;image=icon">Acute Appendicitis</a></th>
<td headers="cat_23_18 row_51_18 percentage" class="level3 levelodd item b1b itemcenter  column-percentage">79 %</td>
<td headers="cat_23_18 row_51_18 average" class="level3 levelodd item b1b itemcenter  column-average">65 %</td>
<td headers="cat_23_18 row_51_18 feedback" class="level3 levelodd item b1b feedbacktext column-feedback">&nbsp;</td>
</tr>

Javascript

$("[id^=cat_]").each(function(i,obj){


var gatherLabels = [];
var gatherValues = [];


$('td[headers*="' + obj.id + '"]').each(function(i, obj) {

    if ($(obj).hasClass("column-percentage")) {
        gatherLabels.push(obj.closest('tr').child('th').innerText); // 'undefined'
        gatherValues.push(obj.innerText.replace('%', '')); // Working fine
    }

});

问题

  1. 如何为每个 td 选择对应 th 内的文本
  2. 两次(在两个 .each 中)声明 obj 是一件很糟糕的事情……似乎无关紧要

【问题讨论】:

    标签: javascript jquery html html-table


    【解决方案1】:

    假设在.each 调用中,变量obj 是一个普通的DOM &lt;td&gt; 元素,并且&lt;th&gt; 是封闭&lt;tr&gt; 的第一个(元素)子元素:

    var th = obj.parentNode.firstElementChild;
    

    由于th 也是一个普通的DOM 元素,您可以继续直接访问其innerText 属性。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多