JS:如何使逻辑(使用循环)将数据插入此表?

时间:2014-08-12 01:45:01

标签: javascript arrays for-loop yui

Fiddle here。但它没有显示任何东西。我无法弄清楚原因。


2D数组的结构如:

数组([0] =>数组([0] =>名称1 =>年龄[2] => CGPA)1 =>数组([0] => Alex 1 => 23 [2] => 2.5)[2] =>数组([0] => Bob 1 => 24 [2] => ; 3)[3] =>数组([0] =>迈克1 => 22 [2] => 3.9))

我们需要将此数组中的数据加载到 YUI模块中创建的数据表中。

所以从我的努力中得到的理解,我认为我们不能在YUI模块块中编写我们的循环或代码。(告诉我,如果我错了)否则很容易,我可以简单地使用for循环。

我仍然知道我需要在这里使用for循环。但是我不知道如何创建逻辑,因为我无法将代码插入到YUI模块的代码块中。 代码如下。

为了便于理解,我通过引用给定数组的索引插入了数据。它工作得很好,但我们不能使用像0 1 2 3等索引,因为我们不知道2D array及其包含的1D数组的长度是多少。 那么有人可以帮我解决这个问题吗?

M.mod_quiz.init_dataTable = function(Y, params) {

    var $rowArray= params.key1;

    alert($rowArray.length);

    /*for (i=0; i<$rowArray.length; i++) {
        for (j=0; j<$rowArray[0].length; j++) {

        }
    }*/

    YUI().use("datatable-sort", function(Y) {
                    var cols = [
                        /*for (i=0; i<$rowArray.length; i++) {
                            {key:"Column "+i , label: $rowArray[0][i] , sortable=true}
                        }*/
                        {key:"Company", label:$rowArray[0][0], sortable:true},
                        {key:"Phone", label:$rowArray[0][1], sortable:true},
                        {key:"Contact", label:$rowArray[0][2], sortable:true}
                    ],
                    data = [
                        {Company:$rowArray[1][0], Phone:$rowArray[1][1], Contact:$rowArray[1][2]},
                        {Company:$rowArray[2][0], Phone:$rowArray[2][1], Contact:$rowArray[2][2]},
                        {Company:$rowArray[3][0], Phone:$rowArray[3][1], Contact:$rowArray[3][2]}
                    ],
                    table = new Y.DataTable({
                        columns: cols,
                        data   : data,
                        summary: "Contacts list",
                        caption: "Table with simple column sorting"
                    }).render(params.key2);
                    });
};

1 个答案:

答案 0 :(得分:1)

看起来您想要创建一个DataTable对象,但您的要求是构造函数的命名columns属性必须是动态的,而不是静态的。正确?

仅仅因为大多数YUI示例都将columns属性显示为内联数组,并不意味着它必须以这种方式完成。你可以动态构建它......

YUI().use("datatable-sort", function(Y) {

            // Build the column definitions dynamically, based on the names in $rowArray[0].
            var cols = [];
            for (i=0; i<$rowArray[0].length; i++) {
                cols.push( { key:$rowArray[0][i], label:$rowArray[0][i], sortable:true } );
            }

            var data = [
                ...

至于你提供的JSFiddle(谢谢!),有一些对Name / Age / CGPA和Company / Phone / Contact的引用混淆。你需要理顺它。即使在那之后,JSFiddle也会例外,但我没有时间。您可以使用浏览器的内置调试器来捕获异常并进行调试。