getElementById不工作返回NULL

getElementById Not Working Returns NULL

本文关键字:NULL 返回 工作 getElementById      更新时间:2024-02-20

我试图将一个动态页面值作为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函数。

document.getElementById("total2")返回一个DOM对象。因此,curTotal是一个对象。

因此,tendered - curTotal是一个字符串减去一个对象,得到NaN。字符串可以被强制为数字,但DOM对象绝对不能。

也许您打算执行document.getElementById("total2").value(假设#total2是一个输入元素),这将使tendered - curTotal成为一个字符串减去一个字符串,这更有可能成功。

(作为最佳实践,您应该将数字输入转换为数字;例如,parseInt(inputString, 10)parseFloat(inputString, 10)。)