Javascript getElementById不工作返回NULL

Javascript getElementById不工作返回NULL,javascript,dom,Javascript,Dom,我尝试将动态页面值作为JS变量提取。它返回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 &

我尝试将动态页面值作为JS变量提取。它返回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;
函数计算(inputString){
var tendered=输入字符串;
var curTotal=document.getElementById(“total2”);
x=投标总金额;
y=(数学四舍五入(x*100)/100.toFixed(2);
如果(y>0)$(“.submit”).show();
if(y<0){
y=“客户仍欠:”.concat(y.replace('-','')).concat(“”);
$(“.submit”).hide();
}
$('#change').html(y);
document.getElementById('ChangeOwn')。值=y;
}

该函数称为onkeyup,用于输入投标金额

HTML:


现金支付
应付金额: 投标金额: 欠钱



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

因此,
tendered-curTotal
是一个字符串减去一个对象,从而生成
NaN
。字符串可以强制转换为数字,但DOM对象绝对不能

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


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

当然
curTotal.value
或类似的东西
getElementById
将返回元素本身,而不是它的值。HTML是什么样子的?您的JavaScript在加载HTML后运行吗?谢谢,我对js没有太多经验,我不知道object vs string。我添加了一个隐藏的输入元素,现在一切正常。非常感谢你!
<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>