【问题标题】:check value in table row column检查表格行列中的值
【发布时间】:2015-11-05 16:54:00
【问题描述】:

我有一个 html 表 - TemplateData。在 Tbody 内,我在每一行“data-uid”上都有一列,这可能不是唯一的。在以升序显示之前,我已经对表格进行了排序。看起来是这样的:

<tr id="Tr2" data-uid="1" role="row" class="odd"/>
<tr id="Tr2" data-uid="2" role="row" class="even"/>
<tr id="Tr2" data-uid="2" role="row" class="odd"/>
<tr id="Tr2" data-uid="2" role="row" class="even"/>
<tr id="Tr2" data-uid="3" role="row" class="odd"/>
<tr id="Tr2" data-uid="4" role="row" class="odd"/>

NOTE 2 出现 3 次。每个值可能出现多次

我可以通过以下方式获取表格:

var table = $('#TemplateData').dataTable();

我的问题是:如果我有一个存储在 'val' 中的值,我如何检查表格以获取带有 data-uid=val; 的行

所以...类似于 table.rows[val]

从这里检查下一行,看看它的 data-uid 是否与 val 不同。如果是这样,请传回此值。如果不继续到下一行,直到找到不同的值。

所以....

val = 2
get table.row[where val = data-uid]
check next row
if table.rows[data-uid = val] continue until it is not the same, when value is different pass back
var newVal = ?

....任何帮助将不胜感激,谢谢

【问题讨论】:

标签: javascript jquery


【解决方案1】:

这是纯 JavaScript,希望对您有所帮助。

    var elements = document.getElementsByTagName('tr');
    var elementsLength = elements.length;

    for (var i = 0; i < elements.length; i++) {
        var currentElement = elements[i].getAttribute('data-uid');
        for (var j = i + 1; j < elements.length; j++) {

            var nextElement = elements[j].getAttribute('data-uid');

            if(currentElement !== nextElement) {
                return elements[j].getAttribute('data-uid');
            }
        }
    }

祝你好运,

Zorken17

【讨论】:

  • 感谢您的回复,但这并没有回答我的问题,我需要 currentElement 之后的下一条记录中的 data-uid 的值
  • @John,现在我进行了一些更改,函数将返回下一行值
【解决方案2】:

即使你不使用它,id 属性也应该是唯一的。

然后,您可以使用 jquery select 语法来获取具有某些特征的行:

function datavalchanged(value) {
   ..put code to execute at change detection;
}

var group = $('tr[role="row"]');

var desired dataval = group[0].getAttribute('data-uid');
/* additionally put dataval=0 to detect also first data-uid change.  */

获取所有具有 role = row 的行并像数组一样循环处理它们。

for (var i = 0; i < group.length; i++) {
   var row = group[i];
   var value = row.getAttribute('data-uid');
   while (value == dataval) {
       continue;
   }
   datavalchanged(value);
   dataval=value;
   /*ready for next change detection or force exit if interested in first change*/
}

在 while 循环结束时,该值具有您需要的下一个值。

编辑: 如果 html 不完整,我写的似乎不起作用:

<table>
<tr id="Tr2" data-uid="1" role="row" class="odd" ><td></td></tr>
<tr id="Tr2" data-uid="2" role="row" class="even"><td></td></tr>
<tr id="Tr2" data-uid="2" role="row" class="odd" ><td></td></tr>
<tr id="Tr2" data-uid="2" role="row" class="even"><td></td></tr>
<tr id="Tr2" data-uid="3" role="row" class="odd" ><td></td></tr>
<tr id="Tr2" data-uid="4" role="row" class="odd" ><td></td></tr>
</table>

【讨论】:

  • 感谢您的回复,但这并不能回答我的问题。我想要分组后下一条记录的数据uid
  • 哦,好吧,我没明白。我修改它。
  • 但我不知道所需的 dataval 它将为空,直到我找到下一行的值与之前的 data-uid 不同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 2013-05-21
  • 2020-08-07
  • 2015-07-09
  • 1970-01-01
相关资源
最近更新 更多