Javascript 如何在displaytag中设置行id[TR]和列id[TD]?

Javascript 如何在displaytag中设置行id[TR]和列id[TD]?,javascript,html,jsp,displaytag,Javascript,Html,Jsp,Displaytag,我正在使用Displaytag显示DataGrid。现在,我必须根据一些计算更改行的颜色。好像 column3+column4>coulmn5的值,则行颜色应为黄色 column3+column4的值来考虑解决方案,稍后列排序的原因可能会改变。 目前我正在使用下面的代码,我想对其进行更改 var rows = tbody.getElementsByTagName("tr"); 迭代行对象 var tdObj = rows[i].getElementsByTagName("td")[3]

我正在使用Displaytag显示DataGrid。现在,我必须根据一些计算更改行的颜色。好像

column3+column4>coulmn5的值,则行颜色应为黄色

column3+column4的值 column3+column4的值=coulmn5则行颜色应为白色

我认为唯一的方法是使用getElementByID()方法

<强>注释:我不想使用<代码> GETelEngsByTaGeNAME.()[index ] < /代码>来考虑解决方案,稍后列排序的原因可能会改变。

目前我正在使用下面的代码,我想对其进行更改

var rows = tbody.getElementsByTagName("tr");
迭代行对象

var tdObj = rows[i].getElementsByTagName("td")[3]  

身份证是一种方法。另一种方法是在每个
td
上设置一个类(这样您就可以在每行上重复使用相同的类)。然后在单元格上迭代,寻找具有正确类名的单元格。如果愿意,可以将其抽象为getElementsByClassName函数

一种使用较少标记的方法是保留一个列来索引查找,并使用它来获取列号,而不是在每行的单元格上迭代。您可以从标题上的类或
col
元素中获取此信息。例如:

<script type="text/javascript">
    function check(table) {
        // Work out which column is at which index
        //
        var columns= {};
        var ths= table.tHead.rows[0].cells;
        for (var i= ths.length; i-->0;)
            if (ths[i].className.indexOf('column-')==0)
                columns[ths[i].className.substring(7)]= i;

        // Check each row
        //
        var rows= table.tBodies[0].rows;
        for (var i= rows.length; i-->0;) {
            var cells= rows[i].cells;
            var a= +cells[columns.a].innerHTML;
            var b= +cells[columns.b].innerHTML;
            var sum= +cells[columns.sum].innerHTML;
            var right= a+b==sum;
            rows[i].className= right? 'right' : 'wrong';
        }
    }
</script>

<style>
    .right { background: green; }
    .wrong { background: red; }
</style>

<table id="t">
    <thead>
        <tr>
            <th class="column-a">A</th>
            <th class="column-b">B</th>
            <th class="column-sum">Sum</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
        <tr>
            <td>4</td>
            <td>5</td>
            <td>6</td>
        </tr>
    </tbody>
</table>

<button onclick="check(document.getElementById('t'));">Check</button>

功能检查(表){
//计算出哪个列位于哪个索引处
//
var列={};
var ths=table.tHead.rows[0]。单元格;
对于(变量i=th.length;i-->0;)
if(th[i].className.indexOf('column-')==0)
列[th[i].className.substring(7)]=i;
//检查每一行
//
var rows=table.tBodies[0]。行;
对于(变量i=rows.length;i-->0;){
变量单元格=行[i]。单元格;
var a=+单元格[columns.a].innerHTML;
var b=+单元格[columns.b].innerHTML;
var sum=+单元格[columns.sum].innerHTML;
var right=a+b==总和;
行[i]。className=right?right':'错误';
}
}
.right{背景:绿色;}
.错误{背景:红色;}
A.
B
总和
1.
2.
3.
4.
5.
6.
检查
注意:使用
innerHTML
获取文本内容有点淘气,但对于数字来说效果不错,因为它们不能包含HTML特殊字符。对于任意文本,您需要一个提取文本内容函数


使用
/
单元格
比使用
getElementsByTagName
更可取。它更快、更容易阅读,而且您不必担心嵌套表。

首先,我认为不修改源代码就无法在displaytag中的td或tr上设置ID。这并没有留下我要做的事情清单,但现在我有一个工作要做

不是定义表,而是:

<display:table id='row' name="..." export="true" requestURI="">
  <display:column property="usefulData" title="Useful data" sortable="true" />
  ... more columns ...
</display:table>

... 更多专栏。。。
这样做:

<display:table id='row' name="..." export="true" requestURI="">
  <display:column title="Useful data" sortable="true" >
    <span id='${row.usefulData}' class='css_class_selector'>${row.usefulData}</span>
  </display:column>
</display:table>

${row.usefulData}
请注意环绕打印数据的范围。现在,您可以在表中选择与打印相关的数据,这可能是您想要的;选择您的数据,而不是专门选择td和tr