我正在使用javascript计算Django模板中某个输入字段的值(onkeyup=()
,表单处于循环中,例如{% for p in prediction %} {% endfor %}。
我用这行代码来获取输入值(注意:它们处于循环中)
let stake_amount_input = document.querySelector("#amount").value
let shares_amount_input = document.querySelector("#shares").value
基于我在Django循环中拥有所有这些函数的事实,当我计算循环中的其他对象时,我不应该得到所有输入字段的值吗?
基于我在Django循环中拥有所有这些函数的事实,当我console.log(odds)时,我不应该得到所有的赔率吗
{% for p in prediction.prediction_data.all %}
<form action="#" method="POST">
<input type="number" value="" name="amount" id="amount" class="shares" onkeyup="CalculateNewBalance()">
<input type="number" value="" name="shares" id="shares" class="shares" onkeyup="CalculateNewBalance()">
<script>
function CalculateNewBalance(){
let stake_amount_input = document.querySelector(".amount").value
let shares_amount_input = document.querySelector(".shares").value
let potential_win = document.querySelector(".potential-win")
let potential_win_value = parseFloat(stake_amount_input) * parseInt(shares_amount_input)
potential_win.innerHTML = "$" + potential_win_value
// if the potential_win innerHTML shows Nan, then i want to change the innerHTML to $0.00, but this is not working too
if (potential_win === isNan) {
potential_win.innerHTML = "$0.00"
}
</script>
</form>
{% endfor %}
第一节第一节第一节第一节第一次
**编辑:**我的模板
<div class="mid-area">
<div class="single-area">
<div class="item-title d-flex align-items-center justify-content-between">
<span>Choose Stake Amount</span>
</div>
<div class="d-flex in-dec-val">
<input type="number" required value="{{ p.amount }}" name="amount" placeholder="amount" class="shares" />
<div class="btn-area">
<button class="plus" type="button">
<img src="{% static 'assets/images/icon/up-arrow.png' %}" alt="icon" />
</button>
<button class="minus" type="button">
<img src="{% static 'assets/images/icon/down-arrow.png' %}" alt="icon" />
</button>
</div>
</div>
<p id="error-div" class="mt-2"></p>
</div>
<div class="single-area quick-amounts"></div>
<div class="single-area quick-amounts">
<div class="item-title d-flex align-items-center">
<p>Choose <b>Shares</b> Amount</p>
</div>
<div class="d-flex in-dec-val">
<input type="number" required value="1" name="shares" placeholder="shares" class="shares" />
<div class="btn-area">
<button class="pldus" type="button">
<img src="{% static 'assets/images/icon/up-arrow.png' %}" alt="icon" />
</button>
<button class="mindus" type="button">
<img src="{% static 'assets/images/icon/down-arrow.png' %}" alt="icon" />
</button>
</div>
</div>
</div>
<div class="single-area smart-value">
<div class="item-title d-flex align-items-center">
<p class="mdr text-capitalize">Potential win</p>
</div>
<div class="contact-val d-flex align-items-center"><span style="font-size: 24px;" class="potential-win">$0.00</span><br /></div>
</div>
</div>
2条答案
按热度按时间2hh7jdfx1#
不要把整个表单和脚本放在循环中,只需在循环中添加输入字段,然后在循环中的每个元素上设置事件或以编程方式添加事件侦听器。
以下是工作示例
一个二个一个一个
1.如果你正在创建一个包含真实交易和金额计算的应用程序,你不应该依赖于客户端计算,而是在服务器端处理它。
1.不要在循环内使用ID,它应该是唯一的
bkhjykvo2#
你必须在每次循环时添加唯一的名称。变量名和ID应该是唯一的。为此,你必须添加计数器或唯一的值。查看answer了解如何添加计数器。
{{ forloop.counter }}
返回从1到number的数字列表,直到for循环运行。this将使每个id和变量都是唯一的。例如,当循环运行时
第一次:
第二次:
等等。