Javascript 如何省略某些单元格中的数据,其中表格是从xml文件填充的
我有一个xml文件,其中包含必须在表中显示的数据。现在,我逐行显示所有数据,因此我的表如下所示:Javascript 如何省略某些单元格中的数据,其中表格是从xml文件填充的,javascript,asp.net,html,Javascript,Asp.net,Html,我有一个xml文件,其中包含必须在表中显示的数据。现在,我逐行显示所有数据,因此我的表如下所示: User | Date | Something John | 05.10| task_1 John | 05.10| task_2 John | 16.10| task_3 Jane | 16.10| task_1 但我想得到类似的东西: User | Date | Something John | 05.10| task_1 | | task_2
User | Date | Something
John | 05.10| task_1
John | 05.10| task_2
John | 16.10| task_3
Jane | 16.10| task_1
但我想得到类似的东西:
User | Date | Something
John | 05.10| task_1
| | task_2
| 16.10| task_3
Jane | 16.10| task_1
所以,若特定单元格中的日期等于前一行中对应的单元格(或者若该单元格为空,则等于从bot向上看的第一个非空单元格),我想省略它
当前代码:
<table id="DataTable" datasrc="#XMLData" cols="3">
<thead>
<tr>
<td class="Example">User</td>
<td class="Example">Date</td>
<td class="Example">Something</td>
</tr>
</thead>
<tbody>
<tr>
<td><span datafld="USER"></td>
<td><span datafld="DATE"></td>
<td><span datafld="SOMETHING"></td>
</tr>
</tbody>
</table>
使用者
日期
某物
注意:
<table id="DataTable" datasrc="#XMLData" cols="3">
<thead>
<tr>
<td class="Example">User</td>
<td class="Example">Date</td>
<td class="Example">Something</td>
</tr>
</thead>
<tbody>
<tr>
<td><span datafld="USER"></td>
<td><span datafld="DATE"></td>
<td><span datafld="SOMETHING"></td>
</tr>
</tbody>
</table>
此问题来自现有(旧)系统,我的选择有限。特别是我不能更改xml文件,也不应该使用基于服务器的asp.net控件(但如果没有其他方法/这是最简单的解决方案,我也可以),所以我的目标是最纯的html和javascript解决方案。也许您可以尝试使用xslt创建html。在本例中,您将能够在xslt中检查日期 如果需要快速而肮脏的东西,可以用这样的东西。。。。我希望你只有一个人;) 测试为在FF工作(将需要一些交叉划船清理。将留给您)。您可能需要清理prevName/名称比较以满足您的需要
var tablemerge = {
init : function(){
var tab = document.getElementById("DataTable");
var prevName, prevDate;
for (i=0;i<tab.tBodies[0].rows.length;i++){
var name = tab.tBodies[0].rows[i].cells[0].innerHTML;
var date = tab.tBodies[0].rows[i].cells[1].innerHTML;
if (i== 0) {
prevName = name;
prevDate = date;
continue;
}
else{
if (name == prevName)
{
var cell = tab.tBodies[0].rows[i].deleteCell(0);
var cell = tab.tBodies[0].rows[i].insertCell(0);
if (date == prevDate)
{
var cell = tab.tBodies[0].rows[i].deleteCell(1);
var cell = tab.tBodies[0].rows[i].insertCell(1);
}
else{
prevDate = date;
}
}
else
{
prevName = name;
prevDate = date;
}
}
}
}
}
tablemerge.init();
var tablemerge={
init:function(){
var tab=document.getElementById(“数据表”);
变量prevName,prevDate;
对于(i=0;ihuh,所以我必须以野蛮的方式来做;/无论如何,感谢您提供详细的解决方案:)