-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()(未定义)。实现此目的的一种方法是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.onload文档

于 2013-01-16T22:04:07.737 回答
1

不需要onload,调用事件click即可。这是代码:

document.getElementById("plus").onclick = function() {updateResult();};
    
    function updateResult()
    {
        var first = parseFloat(document.getElementById("first").value);
        var second = parseFloat(document.getElementById("second").value);
        if (isNaN(first)) first = 0;
        if (isNaN(second)) second = 0;

        document.getElementById("result").value = first + second;
    }
<html>
<body>
    <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" />
</body>
</html>

于 2020-12-14T18:50:07.270 回答
0

onclick,不是onClick

请确保大小写正确。

于 2013-01-16T22:00:46.727 回答