次の HTML コードがあります。
<table class="viewTable">
<tr>
<td>Price</td>
</tr>
</table>
そして、次のようにJavascriptを使用してデータを動的に挿入したい:
var totalPrice = 0;
map.each(function(key , value , i) {
params = {};
params.id = key;
// get datas from Controller class via ajax
ajax(url, params, false, function(result) {
totalPrice += setData(result , key , value);
});
});
// alert("something!"); // this may satisfy my problem.. I have no idea..
// Total Price shown on last row
$('table.viewTable tr:last').after("<tr class='title_bar'><td colspan='5' style='text-align: right;padding-right: 35px;'>"+num2Currency(totalPrice)+"</td></tr>");
setData
機能は次のとおりです。
function setData(result , partsId , count) {
var price = result.price;
html = [];
html.push("<tr>");
html.push("<td><div>"+price+"</div></td>");
html.push("</tr>");
$('table.viewTable').append(html.join(''));
return price;}
この質問に対するジェイドの回答の map 関数を使用しました: Map in JavaScript。
私の問題は、結果の表示または手順自体が正しくないことです。最初に価格行を挿入し、次に totalPrice 行を挿入する必要があります。代わりに、順序が逆になり、totalPrice が最初に表示され、その後に価格行が続きます。totalPrice を挿入する前にアラートステートメントを挿入すると、問題なく動作しました。助言がありますか?コードの何が問題になっていますか? jQuery は非同期でコンパイルされますか?