-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 に答える