代码之家  ›  专栏  ›  技术社区  ›  zgorawski

如何省略某些单元格中的数据,其中的表是从xml文件填充的

  •  1
  • zgorawski  · 技术社区  · 15 年前

    我有一个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到top的第一个非空单元格),我想省略它。

    <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>
    

    注:

    2 回复  |  直到 15 年前
        1
  •  1
  •   Ravindra Sane    15 年前

    如果它需要快速和肮脏的东西,使用这样的东西。。。。我希望你只有一个人;)

    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();
    
        2
  •  1
  •   Danil    15 年前

    也许您可以尝试使用xslt创建html。在这种情况下,您将能够在xslt中检查日期。