Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to dynamically create parameters' names

I have the following function that I want to make more generic:

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>"));
}

I tried the following approach:

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>"));
    }
}

However, instead of the values of rowData.param1...3 it prints "rowData.param1", "rowData.param1" and "rowData.param1".

like image 326
JoeBlack Avatar asked May 19 '26 00:05

JoeBlack


1 Answers

You can use bracket notation to access an object property by string name like this:

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

As a side note, you are creating a new array each iteration and storing your property name as the ith element of that array. You could more simply use a variable:

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

Or a one-liner:

for (i = 1; i <= 3; i++) {
    row.append($("<td>" + rowData['param' + i] + "</td>"));
}
like image 187
IrkenInvader Avatar answered May 20 '26 14:05

IrkenInvader



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!