1

PHP には、aData[4]、aData[5]、aData[6] として JQuery に渡される 3 つの文字列があります。

そのような:

        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 ごとに 1 行にしたいので、結果は次のようになります。

UPC             Description      Total
0004712503209   MARIONBRY        37.65
0004712503201   APPLE PIE        33.29

これらの文字列を JQuery で解析するにはどうすればよいですか?

4

2 に答える 2

1

本当に必要なのは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 を 3 回呼び出しているため、これはあまり効率的ではないことに注意してください。これは、他の多くの変数を作成したり、物事をさらに複雑にしたりすることなく、最も迅速な解決策です。(ちなみに、配列の長さ aData[4].split(",") は and とまったく同じであると想定していaData[5].split(",")ますaData[6].split(",")。しかし、繰り返しになりますが、これは簡単な解決策であり、他の価値のある拡張機能を追加することができます。お申し込みに必要と思われるもの。

于 2013-10-01T03:30:19.273 に答える
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);

jsフィドル

PS: これは、2 つの値がある場合にのみ機能します。2 つ以上ある場合は、値をループして、値ごとに新しい行を追加する必要があります。

于 2013-10-01T03:31:51.550 に答える