Javascript 如何省略某些单元格中的数据,其中表格是从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

我有一个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    
     | 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,所以我必须以野蛮的方式来做;/无论如何,感谢您提供详细的解决方案:)