【问题标题】:How to populate table with array in jquery?如何在 jquery 中用数组填充表?
【发布时间】:2012-09-14 16:52:32
【问题描述】:

我有一个我无法解决的问题。我有一个 ajax 成功函数,它像这样遍历多维数组:

function onSuccessClientCustomerData(data) {
    // Count length of object
    var count = 0;
    for (i in data) {
        if (data.hasOwnProperty(i)) {
            count++;
        }
    }

    // Fetch data
    var arr = new Array(data.variable0, data.variable1, data.variable2, data.variable3, data.variable4);
    for(var i = 0; i< count; i++) {
        var variable = $.parseJSON(arr[i]);

    }
}

我每个数组都有三个键,我想在每一行上填充 td:eq(1) 到 td:eq(2):

<table id="test">
<tr>
    <td><input type="text"></td>
<td class="outputName">-</td>
    <td class="outputRating">-</td>
<td class="outputTurnover">-</td>
</tr>
<tr>
    <td><input type="text"></td>
<td class="outputName">-</td>
    <td class="outputRating">-</td>
<td class="outputTurnover">-</td>
</tr>
</table>

我该怎么做。我已经尝试了每个功能,但无法让它工作!

如果有任何帮助或参考资料,我们将不胜感激!

谢谢!

编辑/这是我的解决方案

function onSuccessClientCustomerData(data) {
    // Count length of object
    var count = 0;
    for (i in data) {
        if (data.hasOwnProperty(i)) {
            count++;
        }
    }

    // Fetch data
    var arr = new Array(data.variable0, data.variable1, data.variable2, data.variable3, data.variable4);
    for (var i = 0; i < count; i++) {
        var arr_j = $.parseJSON(arr[i]);
        $("#row" + i + " .key0").html(arr_j.name);
        $("#row" + i + " .key1").html(arr_j.rating);
        $("#row" + i + " .key2").html(arr_j.percentOfTotalIncome);
    }
}

【问题讨论】:

    标签: jquery ajax arrays multidimensional-array


    【解决方案1】:
    function onSuccessClientCustomerData(data) {
        var data = $.parseJSON(data);
        ....
    }
    

    你需要先解析数据。

    【讨论】:

    • 看成功函数。它已经被解析了。我得到了数据,但我想知道如何按照描述填充表格
    【解决方案2】:

    您在必须插入值的部分需要帮助吗?如果是这样:

    jQuery 代码

    function onSuccessClientCustomerData(data) {
        // Count length of object
        var count = 0;
        for (i in data) {
            if (data.hasOwnProperty(i)) {
                count++;
            }
        }
    
        // Fetch data
        var arr_i = new Array(data.variable0, data.variable1, data.variable2, data.variable3, data.variable4);
        for (var i = 0; i < count; i++) {
            var arr_j = arr_i[i];
            for (var j = 0; j < arr_j. length; j++) {
                $("#row" + i + " .key" + j).html(arr_j[j]);
            }
        }
    }
    

    HTML 代码

    <table id="test">
      <tr id="row0">
        <td><input type="text"></td>
        <td class="key0" class="outputName">...</td>
        <td class="key1" class="outputRating">...</td>
        <td class="key2" class="outputTurnover">...</td>
      </tr>
      <tr id="row1">
        <td><input type="text"></td>
        <td class="key0" class="outputName">...</td>
        <td class="key1" class="outputRating">...</td>
        <td class="key2" class="outputTurnover">...</td>
      </tr>
    </table>
    

    测试代码

    我用 Chrome 测试了代码,它运行良好。以下是重现它的步骤:-

    • 使用 F12 打开元素窗格并执行以下操作:

      1. 将 HTML 部分添加到网页中;
      2. 可选择添加边框和一些边距以使其更清晰;


    • 使用 Ctrl + Shift + J 打开 Web 控制台并执行以下操作:

      1. arr_i(我们将使用它而不是data)一个占位符值:

        var arr_i = new Array([00, 01, 02], [10, 12, 13]);
        
      2. 运行代码设置count:

        // Count length of object
                var count = 0;
                for (i in data) {
                    if (data.hasOwnProperty(i)) {
                        count++;
                    }
               }
        
      3. 使用我的函数添加值(确保在使用 jQuery 的页面上运行代码!否则,使用this bookmark):

        for (var i = 0; i < count; i++) {
            var arr_j = arr_i[i];
            for (var j = 0; j < arr_j. length; j++) {
                $("#row" + i + " .key" + j).html(arr_j[j]);
            }
        }
        

    瞧!这可能会在 今天 明天 本周明年(希望如此)为我带来大约 20 到 30 票...

    【讨论】:

    • 当我拿到我的电脑时会尝试!谢谢!
    • 嘿,现在测试一下,我得到了这个 {, ", 0 所以这意味着它不获取键值。只有前三个字符。不知道为什么?!
    • 您的建议有效,但我有一个多维数组,因此需要 $.parseJSON()。我尝试将其添加到您的建议中,但这不起作用:)至少不适合我:)
    • 我对你的代码做了一些调整,但效果很好!谢谢! :)
    • @Ismailp 很高兴为您提供帮助。您介意编辑我的答案以反映您所做的调整吗?它将帮助未来的读者,我希望看到它... :)
    猜你喜欢
    • 2015-06-02
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 2011-03-30
    相关资源
    最近更新 更多