我在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中解析这些字符串?
答案 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);
PS:仅当您有两个值时才有效。如果您的值超过2,则需要循环遍历值并为每个值添加新行。