Javascript 如何在displaytag中设置行id[TR]和列id[TD]?
我正在使用Displaytag显示DataGrid。现在,我必须根据一些计算更改行的颜色。好像 column3+column4>coulmn5的值,则行颜色应为黄色 column3+column4的值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]
<强>注释:我不想使用<代码> 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