3

足し算の問題 (1 + 1 OR 1 + 5 + 2 + 9 など) を解決する簡単な JavaScript を作成しました。それは正常に動作します。

問題は、新しい値が入力されるたびに継続的に実行することです。「1 + 1」と入力するとすぐに 2 が表示され、続けて「+ 1」と入力すると 3 が表示されます。

連続実行部分は多少機能します。「1 + 1」と入力すると、スペースバーを押すまで合計は表示されませんが、スペースバーを押さなくてもすぐに 2 が表示されます。私は何が欠けていますか?

フィドル: http://jsfiddle.net/z26eg/

HTML

<textarea cols="50" rows="10" id="addThis"></textarea>
<div id="sum"></div>

JavaScript

var input = document.getElementById("addThis");

input.onkeypress = function() {
    var finalAnswer = 0;

    // Get form input
    var processAddThis = addThis.value;

    // Remove all spaces in problem
    // Example problem: 10 +    3   + 2
    processAddThis = processAddThis.replace(/\s/g,''); // 10+3+2

    // Split numbers into an array
    var addTheseValues = processAddThis.split("+");

    // Go through numbers and add them up
    for (var i = 0; i < addTheseValues.length; i++) {
        finalAnswer += Number(addTheseValues[i]);
    }

    // Display sum
    sum.innerHTML = finalAnswer;
}
4

3 に答える 3

3

代わりにon を使用する必要がありますkeyup:

http://jsfiddle.net/z26eg/1/

input.onkeyup = function() {
    .....
};
于 2013-09-07T07:01:04.703 に答える
2

onkeyup以下のように関数を呼び出す必要があります。

input.onkeyup = function() {
    /* The rest of your current code as it already works fine */
};

キーが押されるkeydownとイベントが発生し、その後すぐにkeypressイベントが続きます。これらの両方の時間の間、押されたキーの値はまだ計算に使用できません。

次に、keyupキーが離されたときにイベントが生成されます。この時点で、押されたキーの値が計算可能になります。

このfiddleでは、 に任意の値を入力textareaし、コンソールを見て 3 つのイベントの違いを確認します。

于 2013-09-07T07:13:48.703 に答える
2

「onkeyup」イベントを試してください。わたしにはできる。

于 2013-09-07T07:00:18.827 に答える