我正在尝试将动态页面值作为JS VAR。它返回NaN。不知道为什么。
function calculate(inputString) {
var tendered=inputString;
var curTotal=document.getElementById("total2");
x=tendered-curTotal;
y=(Math.round(x * 100) / 100).toFixed(2);
if (y > 0) $(".submit").show();
if (y < 0) {
y="<font color='red'>Customer Still OWES: ".concat(y.replace('-','')).concat("</font>");
$(".submit").hide();
}
$('#change').html(y);
document.getElementById('changeowed').value = y;
}
该函数被称为onkeyup,输入投标金额。
HTML:
<div class="overlay">
<div class="border">
<div class="cashform">
<center>
<h1>Cash Payment</h1><br>
<form name="cash" action="sale.php" method="post">
<h2>Amount Due: <font color="green"><b><div id="total2"></div></b></font></h2>
<h2>Amount Tendered: <input type="text" id="tendered" name="tendered" size="10" onkeyup="calculate(this.value)"></h2>
<h2>Change Owed<font color="green"><b><div id="change"></div></b></font></h2>
<br><br><br>
<input type="hidden" name="action" value="cash" />
<input type="hidden" name="total" value="<?php echo $total; ?>" />
<input type="hidden" id="changeowed" name="changeowed" />
<input type="hidden" name="sid" value="<?php echo $sid; ?>" />
<input type="submit" name="submit" value="Submit" class="submit"> || <input type="button" value="Cancel" class="cancel">
</form>
</center>
</div>
</div>
我已经尝试使用HTML上面和下面的JS。
我说价值(元素)是动态的,因为它会根据交易而变化(在将商品扫描到销售中或从销售中删除商品时不会重新加载页面)。在销售中添加或删除商品会调用JS POST功能。
答案 0 :(得分:1)
document.getElementById("total2")
返回一个DOM对象。因此,curTotal
是一个对象。
因此,tendered - curTotal
是一个字符串减去一个对象,产生NaN
。该字符串可能被强制转换为数字,但DOM对象肯定不能。
也许你打算做document.getElementById("total2").value
(假设#total2
是一个输入元素),这会使tendered - curTotal
一个字符串减去一个字符串,这更有可能成功。
(最佳做法是,您应将数字输入转换为数字;例如parseInt(inputString, 10)
或parseFloat(inputString, 10)
。)