您好,我正在try 创建一个计算器,但当我点击任何操作符按钮,如+,-,/,*和点按钮,它没有添加到我的输入中.另外,当我点击这些按钮时,整个输入标记值都被擦除了.怎么修呢?请帮我修一下.

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="calci.css">
</head>

<body>
    <p id="para"></p>
    <div class='main'>
        <div class="showText">
            <input class="input" type="number" id="input" disabled><br>
        </div>
        <div>
        <div class="buttons">
            <button type="button" id="block1">1</button>

            <button type="button" id="block2">2</button>

            <button type="button" id="block3">3</button>

            <button type="button" id="block4">4</button>

            <button type="button" id="block5">5</button>

            <button type="button" id="block6">6</button>

            <button type="button" id="block7">7</button>

            <button type="button" id="block8">8</button>

            <button type="button" id="block9">9</button>

            <button type="button" id="block0">0</button>

            <button type="button" id="dot" value=".">.</button>
        </div>
        <div class="operators" >
            <button class="add" id="plus" value="+">+</button>
            <button class="substract" id="minus" value="-">-</button>
            <button class="division" id="divide" value="/">/</button>
            <button class="multiply" id="multiply" value="*">*</button>
            <button id="ans">Answer</button>
            <button type="reset" id="clr">Reset</button>
            
            
        </div>
        </div>
    </div>
    <script src="calci.js"></script>
</body>

</html>

Java脚本从这里开始:

let input = document.querySelector('.input');
let button = document.querySelectorAll('button');

for(let btn of button){
    btn.addEventListener('click',()=>{
      if(input.value == ""){
        input.value = (btn.innerText);
      }
      else if(input.value != "" ){
        input.value += btn.innerText;
      }
    })
}

Css从这里开始:

*{
    margin: 0;
    padding: 0;
}

body{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
.main {
    text-align: center;
    margin-top: 2rem;
}
input{
    padding: 10px;
    margin-top: 10px;
    margin-bottom: 10px;
}

推荐答案

因为input类型是number,所以应该是text才能接受特殊字符.

let input = document.querySelector('.input');
let button = document.querySelectorAll('button');

for(let btn of button){
    btn.addEventListener('click', ()=>{
        console.log(btn.textContent)
        input.value += btn.textContent;
    })
}
*{
    margin: 0;
    padding: 0;
}

body{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
.main {
    text-align: center;
    margin-top: 2rem;
}
input{
    padding: 10px;
    margin-top: 10px;
    margin-bottom: 10px;
}
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="calci.css">
</head>

<body>
    <p id="para"></p>
    <div class='main'>
        <div class="showText">
            <input class="input" type="text" id="input" disabled><br>
        </div>
        <div>
        <div class="buttons">
            <button type="button" id="block1">1</button>

            <button type="button" id="block2">2</button>

            <button type="button" id="block3">3</button>

            <button type="button" id="block4">4</button>

            <button type="button" id="block5">5</button>

            <button type="button" id="block6">6</button>

            <button type="button" id="block7">7</button>

            <button type="button" id="block8">8</button>

            <button type="button" id="block9">9</button>

            <button type="button" id="block0">0</button>

            <button type="button" id="dot" value=".">.</button>
        </div>
        <div class="operators" >
            <button class="add" id="plus" value="+">+</button>
            <button class="substract" id="minus" value="-">-</button>
            <button class="division" id="divide" value="/">/</button>
            <button class="multiply" id="multiply" value="*">*</button>
            <button id="ans">Answer</button>
            <button type="reset" id="clr">Reset</button>
            
            
        </div>
        </div>
    </div>
    <script src="calci.js"></script>
</body>

</html>

Javascript相关问答推荐

成帧器运动中的运动组件为何以收件箱开始?

Phaser框架-将子对象附加到Actor

在Angular中将样式应用于innerHTML

角色 map 集/spritebook动画,用户输入不停止在键上相位器3

我应该绑定不影响状态的函数吗?'

从WooCommerce Checkout Country字段重新排序国家,保持国家同步

如何从一个列表中创建一个2列的表?

如何修复我的js构建表每当我添加一个额外的列作为它的第一列?

将核心模块导入另一个组件模块时存在多个主题

如何在.NET Core中将chtml文件链接到Java脚本文件?

钛中的onClick事件需要在两次点击之间等待几秒钟

OpenAI转录API错误请求

MarkLogic-earch.suggest不返回任何值

为什么可选参数的顺序会导致问题?

有没有办法通过使用不同数组中的值进行排序

为什么在运行于<;img>;事件处理程序中的JavaScript中x和y是不可变的?

谷歌饼图3D切片

带元素数组的Mongo聚合

对象作为react 子对象无效(已找到:具有键的对象{type,props}).如果要呈现一个子级集合,请改用数组

如何根据获取的对象数量动态生成状态变量