在JQuery中,如何将逗号分隔的字符串解析为表格单元格元素?

时间:2013-10-01 03:19:56

标签: jquery

我在PHP中有3个字符串,它们作为aData [4]传递给JQuery,aData [5]和aData [6]

这样:

        function fnFormatDetails ( oTable, nTr )
    {
        var aData = oTable.fnGetData( nTr );
        var sOut = '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">';
        sOut += '<thead><tr><td>UPC</td><td>Item Description</td><td>Total</td></tr></thead>';
        sOut += '<tbody><tr><td>'+aData[4]+'</td><td>'+aData[5]+'</td><td>'+aData[6]+'</td></tr></tbody>';
        sOut += '</table>';

        return sOut;
    }

显示:

    UPC                         Description         Total
    0004712503209,0004712503201 MARIONBRY,APPLE PIE 37.65,33.29

我希望每个UPC / Description / Total有一行,结果是:

UPC             Description      Total
0004712503209   MARIONBRY        37.65
0004712503201   APPLE PIE        33.29

如何在JQuery中解析这些字符串?

2 个答案:

答案 0 :(得分:0)

你需要的不是jQuery ......只是简单的旧JavaScript。

function fnFormatDetails ( oTable, nTr )
{
    var aData = oTable.fnGetData( nTr );
    var length = aData[4].split(",").length;
    var sOut = '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">';
    sOut += '<thead><tr><td>UPC</td><td>Item Description</td><td>Total</td></tr></thead>';
    for (var i = 0; i < length; i += 1) {
        sOut += '<tbody><tr><td>'+aData[4].split(",")[i]+'</td><td>'+aData[5].split(",")[i]+'</td><td>'+aData[6].split(",")[i]+'</td></tr></tbody>';
    }
    sOut += '</table>';

    return sOut;
}

请注意,这不是非常有效,因为您为每个循环迭代调用split三次。这只是最快的解决方案,无需创建大量其他变量,或者使事情进一步复杂化。 (顺便说一句,它也假设数组长度aData [4] .split(“,”)将与aData[5].split(",")aData[6].split(",")完全相同。但是,这又是一个简单的解决方案,您可以添加您认为必要的其他有用的增强功能。

答案 1 :(得分:0)

你有没有理由在PHP方面做这件事?您可以在jQuery中执行此操作,如下所示,但如果客户端禁用了JavaScript,则无法使用。

<强> jQuery的:

var newRow = '<tr>';
$('tbody tr').children().each(function() {
    var arr = $(this).html().split(',');
    $(this).html(arr[0]);
    newRow += '<td>' + arr[1] + </td>;
});
newRow += '</tr>';
$('tbody').append(newRow);

jsFiddle

PS:仅当您有两个值时才有效。如果您的值超过2,则需要循环遍历值并为每个值添加新行。