0
私はこれらの2つの関数を使用していますが、最初の関数ではinnerhtmlの値を更新し、2番目の関数ではサブを再計算するために '新しい'合計。.innerhtmlすぐ値をudpatingしない
ただし、2番目の関数で変更されたinnerhtmlを使用すると、古い値が使用されています。最初の関数のinnerhtmlがすぐに更新されないようです。私はすぐに更新するためにsetTimeout()を使ってみましたが、うまくいきませんでした。
<script type="text/javascript">
function refreshTotal(ProductId) {
var qty = document.getElementById("product-quantity-" + ProductId).value;
var UnitPrice = document.getElementById("unit-price-" + ProductId).innerText;
var total = qty * UnitPrice;
$.get('@Url.Action("getItemPositionCart","Home")' , {id: ProductId}, function(data) //data - holds the data returned by the action
{
document.getElementById("product-total-" + data).innerHTML = "$" + total.toFixed(2);
setTimeout(performExpensiveCalculationsAndRender(), 0);
});
$.post('@Url.Action("EditQuantity", "Home")', { id: ProductId, quantity: qty }, function (data) {
})
updateTotal.call();
}
function updateTotal()
{
var grandTotal = 0;
var totalItems = @ViewBag.Count;
for(var counter = 0; counter < totalItems ; counter++)
{
var str = $("[id*=product-total-" + (counter+1)).html();
var res = parseFloat(str.substring(1,str.length));
alert(res);
//alert($("[id*=product-total-" + (counter+1)).html());
grandTotal = grandTotal + res;//parseFloat($("[id*=product-total-" + counter).html());
alert(grandTotal);
};
$("[id*=sub-total]").html("$" + grandTotal.toFixed(2));
}
</script>
.innerhtmlの値は、2番目の機能を終了すると更新されます。
'$ .get'と' $。post 'は非同期です。とにかくデータがないので、 'undateTotal'をすぐに起動するのに本当に役立たない。 – Caramiriel