簡體   English   中英

如果金額為負,則更改表格行的顏色

[英]Changing table row color if amount is in negative

嘗試在以下代碼中更改顏色。

如果金額為正(利潤)-> 綠色發生這種情況

如果金額為負(虧損)-> 紅色doesn't發生

 function roundToTwo(num) { var rounded = +(Math.round(num + "e+2") + "e-2"); if (rounded < 0.01) { rounded = 0 }; return rounded } $("#quantity, #buy, #sell").on("change keyup paste", function() { var quantity = Number($('#quantity').val()); var buy = Number($("#buy").val()); var sell = Number($("#sell").val()); var total_amnt_trade = roundToTwo((quantity * buy) + (quantity * sell)); var brokerage_amnt_buy = ((buy * quantity) * 0.08) / 100; if (brokerage_amnt_buy >= 25) { var brokerage_buy = 25; } else { var brokerage_buy = brokerage_amnt_buy; } var brokerage_amnt_sell = ((sell * quantity) * 0.08) / 100; if (brokerage_amnt_sell >= 25) { var brokerage_sell = 25; } else { var brokerage_sell = brokerage_amnt_sell; } var brokerage = roundToTwo(brokerage_buy + brokerage_sell); //brokerage var transaction_charges = roundToTwo((((buy * quantity) + (sell * quantity)) * 0.00325) / 100); //Transaction Charges var gst = roundToTwo((((transaction_charges * 18) / 100) + (brokerage * 18) / 100)); //GST var total_charges = roundToTwo(brokerage + transaction_charges + gst); var pnl = roundToTwo(((sell - buy) * quantity) - total_charges); if (pnl == 0) { $('#pnl_text_display').text("Profit / Loss"); $('#pnl_color').attr('bgcolor', ''); } else if (pnl > 0) { $('#pnl_text_display').text("Profit"); $('#pnl_color').attr('bgcolor', 'green'); } else if (pnl < 0) { $('#pnl_text_display').text("Loss"); $('#pnl_color').attr('bgcolor', 'red'); } $('#tot_amnt_trade_display').text(total_amnt_trade); $('#total_charges_display').text(total_charges); $('#pnl_display').text(pnl); if (quantity > 0) { if ((buy > 0) || (sell > 0)) { var bep_pnl = -0.5; if (buy == 0) { buy = roundToTwo(sell - 0.01); while (bep_pnl < 0.01) { total_amnt_trade = roundToTwo((quantity * buy) + (quantity * sell)); var brokerage_amnt_buy = ((buy * quantity) * 0.08) / 100; if (brokerage_amnt_buy >= 25) { var brokerage_buy = 25; } else { var brokerage_buy = brokerage_amnt_buy; } var brokerage_amnt_sell = ((sell * quantity) * 0.08) / 100; if (brokerage_amnt_sell >= 25) { var brokerage_sell = 25; } else { var brokerage_sell = brokerage_amnt_sell; } var brokerage = roundToTwo(brokerage_buy + brokerage_sell); //brokerage var transaction_charges = roundToTwo((((buy * quantity) + (sell * quantity)) * 0.00325) / 100); //Transaction Charges var gst = roundToTwo((((transaction_charges * 18) / 100) + (brokerage * 18) / 100)); //GST var total_charges = roundToTwo(brokerage + transaction_charges + gst); bep_pnl = roundToTwo(((sell - buy) * quantity) - total_charges); buy = roundToTwo(buy - 0.01); } var bep = roundToTwo(sell - buy); $('#bep_display').text(bep); } else { sell = roundToTwo(buy + 0.001); while (bep_pnl < 0.01) { total_amnt_trade = roundToTwo((quantity * buy) + (quantity * sell)); var brokerage_amnt_buy = ((buy * quantity) * 0.08) / 100; if (brokerage_amnt_buy >= 25) { var brokerage_buy = 25; } else { var brokerage_buy = brokerage_amnt_buy; } var brokerage_amnt_sell = ((sell * quantity) * 0.08) / 100; if (brokerage_amnt_sell >= 25) { var brokerage_sell = 25; } else { var brokerage_sell = brokerage_amnt_sell; } var brokerage = roundToTwo(brokerage_buy + brokerage_sell); //brokerage var transaction_charges = roundToTwo((((buy * quantity) + (sell * quantity)) * 0.00325) / 100); //Transaction Charges var gst = roundToTwo((((transaction_charges * 18) / 100) + (brokerage * 18) / 100)); //GST var total_charges = roundToTwo(brokerage + transaction_charges + gst); bep_pnl = roundToTwo(((sell - buy) * quantity) - total_charges); sell = roundToTwo(sell + 0.01); } var bep = roundToTwo(sell - buy); $('#bep_display').text(bep); } } } }) 
 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <table class="table table-borderless"> <tbody> <tr style="text-align: center;"> <td><b>Quantity</b></td> <td><b>Buy</b></td> <td><b>Sell</b></td> </tr> <tr> <td><input type="number" class="form-control" id="quantity" placeholder="Quantity" name="quantity"></td> <td><input type="number" class="form-control" id="buy" placeholder="Buy Amount" name="buy"></td> <td><input type="number" class="form-control" id="sell" placeholder="Sell Amount" name="sell"></td> </tr> </tbody> </table> <table class="table table-dark right_side_col"> <tbody> <tr> <td>Total Amount Traded</td> <td><span id="tot_amnt_trade_display"></span></td> </tr> <tr id="pnl_color"> <td><span id="pnl_text_display">Profit / Loss</span></td> <td><span id="pnl_display"></span></td> </tr> <tr> <td>Breakeven Point</td> <td><span id="bep_display"></span></td> </tr> </tbody> </table> <table class="table table-dark right_side_col"> <tbody> <tr> <td>Total Charges</td> <td><span id="total_charges_display"></span></td> </tr> </tbody> </table> 


此外,還請幫助我我的收支平衡點( BEP )公式正確與否,還有沒有更簡單的方法來編寫邏輯代碼?

BEP是指交易者既沒有虧損也沒有利潤的情況。

您的代碼的問題在於,在roundToTwo函數中,您寫道,如果number小於0.01則返回0。因此,它將永遠不會返回小於0的數字。因此,只需刪除if statement ,它將按預期工作。

function roundToTwo(num) {
  return +(Math.round(num + "e+2") + "e-2");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM