如何动态创建参数'名

时间:2016-05-11 18:03:11

标签: javascript jquery

我有以下功能,我想更通用:

function addRow2(rowData) {
    var row = $("<tr />")
    $("#dataTable").append(row);
    row.append($("<td>" + rowData.param1 + "</td>"));
    row.append($("<td>" + rowData.param2 + "</td>"));
    row.append($("<td>" + rowData.param3 + "</td>"));
}

我尝试了以下方法:

function addRow1(rowData) {
    var row = $("<tr />")
    $("#dataTable").append(row);
    for (i = 1; i <= 3; i++) {
        var marker = [];
        marker[i] = 'rowData.param'+i;
        alert(marker[i]);
        row.append($("<td>" + marker[i] + "</td>"));
    }
}

但是,它不是rowData.param1 ... 3的值,而是打印&#34; rowData.param1&#34;,&#34; rowData.param1&#34;和&#34; rowData.param1&#34;。

3 个答案:

答案 0 :(得分:8)

您可以使用括号表示法按字符串名称访问对象属性,如下所示:

marker[i] = rowData['param' + i];

作为旁注,您每次迭代都会创建一个新数组,并将您的属性名称存储为该数组的i元素。您可以更简单地使用变量:

for (i = 1; i <= 3; i++) {
    var marker = rowData['param' + i];
    alert(marker);
    row.append($("<td>" + marker + "</td>"));
}

或者单行:

for (i = 1; i <= 3; i++) {
    row.append($("<td>" + rowData['param' + i] + "</td>"));
}

答案 1 :(得分:0)

您可以使用$.each从rawData获取所有属性,这样您就不必依赖param1, param2并使用有意义的对象属性。

function addRow2(rowData) {
    var row = $("<tr />")
    $("#dataTable").append(row);
    $.each(rowData, function (prop, value) {
        row.append($("<td>" + value + "</td>"));
    });
}

答案 2 :(得分:-1)

为什么要创建数组?您的代码无法简化为:

distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip