使用事件处理程序的简单 javascript 计算器

simple javascript calculator using event handlers

所以我是 javascript 的新手,我正在练习事件处理程序。我在按下按钮时创建了事件处理程序,但没有任何反应。我试图在网上查看计算器,但它们都使用 jquery 或内联 js!我想避免这些,因为我想在事件处理程序方面做得更好。这是我正在处理按钮 0 的代码,id 为“n0:

<!DOCTYPE html>
<html>
    <head>
        <title>
            My Javascript Calculator
        </title>
    </head>

    <body>
        <div id="calculator">
            <input type="text" name="display" disabled>
            <br>
            <div id="keypad">
                <button id="clrEntry">CE</button>
                <button id="clear">C</button>
                <button id="divide">/</button>
                <button id="multiply">*</button>
                <br>
                <button id="n1">1</button>
                <button id="n2">2</button>
                <button id="n3">3</button>
                <button id="add">+</button>
                <br>
                <button id="n4">4</button></button>
                <button id="n5">5</button>
                <button id="n6">6</button>
                <button id="subtract">-</button>
                <br>
                <button id="n7">7</button>
                <button id="n8">8</button>
                <button id="n9">9</button>
                <button id="equal">=</button>
                <br>
                <button id="n0">0</button>
            </div>
        </div>
        <script src="calculator.js"></script>
    </body>
</html>

以下是calculator.js的内容:

    function init()
    var memory;
    {
        document.getElementById('n0').addEventListner("click", number0);

    }

function number0()
    {
        document.getElementById('display').value += 0;
        memory += 0;
        return 0;
    }

window.addEventListner("load", init, false);

多个问题:

  1. addEventListener 拼写错误。
  2. var memory 需要在 init() 函数定义之前,而不是它所在的位置。
  3. 0 按钮只有一个事件侦听器
  4. 没有带有 id="display"
  5. 的元素

一般来说,您必须学会查看浏览器中的错误控制台,因为所有这些语法和 运行-time 错误都会显示在错误控制台中。

我认为脚本标签要么遗漏了,要么是您放入 calculator.js 文件的内容。

两个值得注意的错误是 - 1. addEventListener 输入错误 2. var memory 应该是全局的或者把它放在函数中

function init()
{
       var memory;
   ...
}

所以之后只会在您的代码中出现逻辑错误。

正如其他人所说,您的代码中存在一些错误。 这是我对您的 javascript:

所做的修复
var memory;  //this needs to be declared before starting the function  

function init() {
    document.getElementById('n0').addEventListener("click", number0, false); //addEventListener was misspelt
}

function number0() {
    document.getElementById('display').value += 0;
    memory += 0;
    return 0;
}

window.addEventListener("load", init(), false);

和html:

<div id="calculator">
    <input type="text" name="display" id="display" disabled /> 
    <br>
    <div id="keypad">
        <button id="clrEntry">CE</button>
        <button id="clear">C</button>
        <button id="divide">/</button>
        <button id="multiply">*</button>
        <br>
        <button id="n1">1</button>
        <button id="n2">2</button>
        <button id="n3">3</button>
        <button id="add">+</button>
        <br>
        <button id="n4">4</button>
        <button id="n5">5</button>
        <button id="n6">6</button>
        <button id="subtract">-</button>
        <br>
        <button id="n7">7</button>
        <button id="n8">8</button>
        <button id="n9">9</button>
        <button id="equal">=</button>
        <br>
        <button id="n0">0</button>
    </div>
</div>

需要将 ID "display" 添加到 getElementById('display') 选择器的输入中,并删除 n4 按钮上的第二个。

这是一个工作 fiddle 控制台日志 https://jsfiddle.net/qdpo9gtt/