现有一数组如下:    var ary1= new Array();
    ary1[0]= "小牛,小雪";
    var1[1] = "A物品,B物品,C物品";
    var1[2] = "Price,Amount";请根据如上数组实现给单元格取唯一名:最终单元格如下图所示!另外告知一点,请不要认为数组只是三个元素,Table可以N层,不止三层!

解决方案 »

  1.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <style type="text/css">
    table{ background:#000; float:left}
    table td{ background:#fff; text-align:center}
    </style>
    </head>
    <body>
    <div id="div"></div>
    <script type="text/javascript">   var ary1= new Array(3);
        ary1[0]= "小牛,小雪";
        ary1[1] = "A物品,B物品,C物品";
        ary1[2] = "Price,Amount";
        ary1[0]=ary1[0].split(",");
        ary1[1]=ary1[1].split(",");
        ary1[2]=ary1[2].split(",");
        
        for(var i = 0 ; i < ary1[0].length ; i ++)
        {
            var str = "<table><tr><td colspan='6'>"+ary1[0][i]+"</td></tr>"
            str+="<tr>";
            for(var j = 0 ; j < ary1[1].length ; j ++)
            {
               str+="<td colspan='2'>"+ary1[1][j]+"</td>";
            }
            str+="</tr><tr>"
            
            for(var f = 0 ;f <ary1[1].length ; f ++)
            {
                for(var k = 0 ; k < ary1[2].length ; k ++)
                {
                    str+="<td>"+ary1[2][k]+"</td>"
                }
            }
            str+="</tr></table>"
            document.getElementById("div").innerHTML= document.getElementById("div").innerHTML+str;
        }
        
    </script></body>
    </html>
      

  2.   

    根据事件驱动不需要设置ID
    因为 在生td的同时设置了事件根据mvc 不需要设置ID
    因为数据的修改读取 直接从m层中获取
    请根据 m层的变化来修改 v层
    m层即你的  var ary1
      

  3.   

    是这种么<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script src="http://code.jquery.com/jquery-1.6.2.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                $.fn.GenerateTable = function (config) {//config配置 { binaryArray:二维数组 }              
                    //层次
                    var trLayer = config.binaryArray.length;                //最后输出的html
                    var html = [];
                    //辅助函数stringBuilder
                    var stringBuilder = function (str) {
                        html.push(str);
                    }
                    //辅助函数string format
                    String.Format = function () {
                        var param = [];
                        for (var i = 0, length = arguments.length; i < length; i++) {
                            param.push(arguments[i]);
                        }
                        var format = param[0];
                        param.shift();
                        return format.replace(/\{(\d+)}/g, function (m, i) {
                            return param[i];
                        });
                    }                //得到colspan
                    var getColspan = function () {
                        var colspan = [];                    var arrTop = 1;
                        $.each(config.binaryArray, function (i, n) {
                            colspan.push(config.binaryArray[trLayer - i - 1].length * arrTop);
                            arrTop = config.binaryArray[trLayer-i-1].length* arrTop;
                        });                
                        return colspan;
                    }
                    //装饰Table 
                    var column = [];
                    column.push(1);
                    $.each(config.binaryArray, function (i, n) {
                        var lastColumn = column.pop();                
                        var innerTr = $.each(n, function (j, m) {
                            n[j] = String.Format('<td colspan="{0}">{1}</td>', getColspan()[trLayer - i - 1] / n.length, m);
                        });
                        var alltd = [];
                        for (var k = 0; k < lastColumn; k++) {
                            alltd = $.merge(alltd, innerTr);
                        }
                        var tr = String.Format('<tr>{0}</tr>', alltd.join(""));
                        column.push(n.length * lastColumn);
                        stringBuilder(tr);
                    });
                    $(this).html(html.join(""));
                  
                }            //调用
                $('#tb').GenerateTable({
                    binaryArray: [['小牛', '小雪', 'ss'], ['A', 'B', 'C','d'], ['Price', 'Amount'],['1','2']]
                });
            });
        </script>
    </head>
    <body><table id="tb" style="border:1px solid #ccc; text-align:center;" border="1">
    </table></body>
    </html>
      

  4.   


    不是要这种,我的主要目的是想把各单元格取个唯一的名字,以及哪个单元格cospan多少,都记录下来,最后我要根据记录下来的这些ID,去加载数据到这table里的!因为这只是一个title部分,table下面还有实质数据部分,是到数据源里去找数据来匹配。最后我给各单元格赋值的时候直接根据生成的这些ID去赋值相应 的数据值
      

  5.   

    这种?<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script src="http://code.jquery.com/jquery-1.6.2.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                $.fn.GenerateTable = function (config) {//config配置 { binaryArray:二维数组 }              
                    //层次
                    var trLayer = config.binaryArray.length;                //最后输出的html
                    var html = [];
                    //辅助函数stringBuilder
                    var stringBuilder = function (str) {
                        html.push(str);
                    }
                    //辅助函数string format
                    String.Format = function () {
                        var param = [];
                        for (var i = 0, length = arguments.length; i < length; i++) {
                            param.push(arguments[i]);
                        }
                        var format = param[0];
                        param.shift();
                        return format.replace(/\{(\d+)}/g, function (m, i) {
                            return param[i];
                        });
                    }                //得到colspan
                    var getColspan = function () {
                        var colspan = [];                    var arrTop = 1;
                        $.each(config.binaryArray, function (i, n) {
                            colspan.push(config.binaryArray[trLayer - i - 1].length * arrTop);
                            arrTop = config.binaryArray[trLayer - i - 1].length * arrTop;
                        });
                        return colspan;
                    }
                    //装饰Table 
                    var column = [];
                    column.push(1);
                    $.each(config.binaryArray, function (i, n) {
                        var lastColumn = column.pop();
                        var temp_n1 = [];
                        var temp_n2 = [];
                  
                        var innerTr = $.each(n, function (j, m) {
                            temp_n1[j] = String.Format('<td colspan="{0}" id="tr_{2}_{3}">{1} <br />colspan={0},id="tr_{2}_{3}"</td>', getColspan()[trLayer - i - 1] / n.length, m, i, j);
                        });                    var alltd = [];
                        alltd = $.merge(alltd, temp_n1);
                        for (var k = 1; k < lastColumn; k++) {
                            $.each(n, function (j, m) {
                                temp_n2[j] = String.Format('<td colspan="{0}" id="tr_{2}_{3}">{1} <br />colspan={0},id="tr_{2}_{3}"</td>', getColspan()[trLayer - i - 1] / n.length, m, i+k, j);
                            });
                            alltd = $.merge(alltd, temp_n2);
                        }
                        var tr = String.Format('<tr>{0}</tr>', alltd.join(""));
                        column.push(n.length * lastColumn);
                        stringBuilder(tr);
                    });
                    $(this).html(html.join(""));            }            //调用
                $('#tb').GenerateTable({
                    binaryArray: [['小牛', '小雪'], ['A', 'B', 'C'], ['Price', 'Amount']]
                });
            });
        </script>
    </head>
    <body><table id="tb" style="border:1px solid #ccc; text-align:center;" border="1">
    </table></body>
    </html>
      

  6.   

    $.each  这方法是遍历么?