-1

私のコード(ミニ電卓アプリ):( html / js)

<input class="value" type="text" id="first" />
<input class="value" type="text" id="second" />
<input class="value" type="text" id="result" />
<input class="button" type="button" value="+" id="plus" />

window.onLoad = function motor()
{
    var plus = document.getElementById("plus");
    
    function updateResult(act)
    {
        var first = parseFloat(document.getElementById("first").value);
        var second = parseFloat(document.getElementById("second").value);
        if (isNaN(first)) first = 0;
        if (isNaN(second)) second = 0;

        if (act == '+') {
            document.getElementById("result").value = first + second;
        }
    }
    plus.onClick = updateResult('+');
}

これは機能しません。ボタン「id」が押されたときにonClickアクションが必要です。

4

5 に答える 5

2

関数呼び出しの結果を onclick イベントに割り当てています。関数への参照を割り当てていません。

また、クリック イベント名は小文字のc を使用します。

plus.onclick = function(){updateResult('+');};
于 2013-01-16T22:00:03.643 に答える
1

plusオブジェクトのonClickプロパティを、呼び出しの結果ではなく関数に設定する必要がありますupdateResult()(これは未定義です)。これを実現する1つの方法はupdateResult()、関数を返すことです。

window.onLoad = function motor()
{
    var plus = document.getElementById("plus");

    function updateResult(act)
    {
        return function(){
            var first = parseFloat(document.getElementById("first").value);
            var second = parseFloat(document.getElementById("second").value);
            if (isNaN(first)) first = 0;
            if (isNaN(second)) second = 0;

            if (act == '+') {
                document.getElementById("result").value = first + second;
            }
        };
    }
    plus.onclick = updateResult('+');
}
于 2013-01-16T22:00:44.663 に答える
1
//JS is case-sensitive, the correct property name is `onload` not onLoad
window.onload = function motor()
[...]
    //onclick not onClick
    plus.onclick = function() {
      //you need to assign a function to execute on `onclick` instead of
      //the return value of calling it with () which you were doing previously
      updateResult('+');
    };

フィドル

また、 JSHintなどのコード品質分析ツールの使用を検討してください。これらのオブジェクトに新しいプロパティを作成することは「有効」であるため、これらのミスタイプをキャッチできない場合がありますが、将来的には役立つはずです。また、関数やプロパティの使用方法、またはその適切なスペル/構文について疑問がある場合は、MDNを確認してください。たとえば、window.onloaddocs .

于 2013-01-16T22:04:07.737 に答える
0

それonclickは、ではありませんonClick

ケースが正しいことを確認してください。

于 2013-01-16T22:00:46.727 に答える