-4

Javascript 看起来像这样:

<script type="text/javascript">
$(document).ready(function(){
    var totalOwed = <?php echo $totalTally; ?>;

    $("#cash").keyup(function() { doThis(); });
    $("#card").keyup(function() { doThis(); });

    var paidSoFar = 0;


    function doThis() {
        paidSoFar = parseInt($("#cash").val()) + parseInt($("#card").val());
        alert(paidSoFar);
        if (paidSoFar >= totalOwed) { 
            endCalc = paidSoFar - totalOwed;
            $("#endCalc").html("Change: " + endCalc); 
        }
        else { 
            remaining = totalOwed - paidSoFar;
            $("#endCalc").html("Remaining: " + endCalc);
        }
    }
});
</script>

HTML如下:

Total Owed: <?php echo $totalTally; ?><br />
Cash: <input type="text" id="cash" /><br />
Card: <input type="text" id="card" /><br />
<div id="endCalc"></div>

但是当paidSoFar 变量尝试读取文本输入的值时,它最终会变成 NaN。


日期

现在,我的 Javascript 看起来像这样:

<script type="text/javascript">
$(document).ready(function(){
    var totalOwed = <?php echo $totalTally; ?>;

    $("#cash").keyup(function() { doThis(); });
    $("#card").keyup(function() { doThis(); });

    var paidSoFar = 0;


    function doThis() {
        paidSoFar = parseInt($("#cash").val(), 10) + parseInt($("#card").val(), 10);
        alert(paidSoFar);
        if (paidSoFar >= totalOwed) { 
            endCalc = paidSoFar - totalOwed;
            $("#endCalc").html("Change: " + endCalc); 
        }
        else { 
            remaining = totalOwed - paidSoFar;
            $("#endCalc").html("Remaining: " + endCalc);
        }
    }
});
</script>

HTML如下:

Total Owed: <?php echo $totalTally; ?><br />
Cash: <input type="text" id="cash" /><br />
Card: <input type="text" id="card" /><br />
<div id="endCalc"></div>

但是paidSoFar变量最终会NaN在它尝试读取文本输入的值时结束。

4

2 回答 2

1

更新后

您可以使用一元运算符。例如,

+$("#cash").val()

如中,

paidSoFar = (+$("#cash").val()) + (+$("#card").val());

更新前

专门回答您的问题,而不涉及所有其他问题的细节。在以下代码行中。

function remaining() {
  ...
  if (paidSoFar >= totalOwed) {
    ...
  } else {
    remaining = totalOwed - paidSoFar;
    ...
  }
}

如果您按照 的用法remaining,您可以清楚地看到您正在覆盖remaining一个数字。因此,下次您尝试使用remaining()时,您的 JavaScript 控制台中可能会出现以下错误。

Uncaught TypeError: number is not a function

而下面的用法也令人担忧。

function remaining() {
    ...
    $("#changeOrRemaining").html(remaining);
    ...
}

这显然是一个无限循环。

检查如何在不同的浏览器中打开 JavaScript 控制台?有关访问浏览器控制台的详细信息。

于 2013-01-15T20:11:53.773 回答
0

检查浏览器中的控制台日志(最好使用 Firebug)。您很可能在警报下方遇到错误,它会在收到错误后停止所有 JavaScript 运行。

于 2013-01-15T20:01:56.077 回答