getElementById不工作返回NULL

时间:2013-12-03 14:51:18

标签: javascript dom

我正在尝试将动态页面值作为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功能。

1 个答案:

答案 0 :(得分:1)

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

因此,tendered - curTotal是一个字符串减去一个对象,产生NaN。该字符串可能被强制转换为数字,但DOM对象肯定不能。

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

(最佳做法是,您应将数字输入转换为数字;例如parseInt(inputString, 10)parseFloat(inputString, 10)。)