Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript计算器输入不允许多次清除和小数_Javascript_Html - Fatal编程技术网

JavaScript计算器输入不允许多次清除和小数

JavaScript计算器输入不允许多次清除和小数,javascript,html,Javascript,Html,const numbers=document.querySelectorAll('.number'); let display=document.getElementById('display'); 让输出, 零,, 十进制的 //循环通过所有按钮输出值以显示div for(设i=0;i{ 输出=display.innerHTML+=e.target.value; 如果(输出长度>16){ 警报(“达到最大输入”); } }); }; //删除按钮功能 document.getElementBy

const numbers=document.querySelectorAll('.number');
let display=document.getElementById('display');
让输出,
零,,
十进制的
//循环通过所有按钮输出值以显示div
for(设i=0;i{
输出=display.innerHTML+=e.target.value;
如果(输出长度>16){
警报(“达到最大输入”);
}
});
};
//删除按钮功能
document.getElementById('buttonDelete')。addEventListener('click',(e)=>{
如果(e.target.value==='delete'){
display.innerHTML='';
}
});
document.querySelector(“#buttonZero”).addEventListener('click',(e)=>{
零=e.目标值;
如果(display.innerHTML==''){
output=display.innerHTML=零;
}else if(display.innerHTML==输出){
输出=display.innerHTML+=零;
}
});
document.querySelector(“#buttonDecimal”).addEventListener('click',(e)=>{
十进制=e.目标值;
如果(display.innerHTML==''){
output=display.innerHTML=display.innerHTML.concat('0');
}else if(display.innerHTML==输出){
display.innerHTML=display.innerHTML.concat('.');
}
});
document.querySelector(“#buttonEqual”).addEventListener('click',(e)=>{
if(display.innerHTML==输出){
display.innerHTML=eval(输出);
}否则{
display.innerHTML='';
}
});
let operators=document.queryselectoral(“.operator”);
对于(var i=0;i{
运算符=e.目标值;
如果(display.innerHTML==''){
display.innerHTML=display.innerHTML.concat(“”);
}else if(输出){
display.innerHTML=output.concat(运算符);
}
});
}
#计算器体{
背景色:天蓝色;
边界半径:5px;
垫底:10px;
}
.计算器按钮{
显示:内联块;
背景色:#5959;
填充:25px;
保证金:5px;
边界半径:5px;
颜色:#fff;
}
.计算器按钮:激活{
背景色:#fff;
颜色:#000;
}
#巴顿塞罗{
宽度:138px;
}
#钮扣删除{
宽度:132px;
背景色:#ff3333;
}
#钮扣相等{
背景色:#33cc33;
颜色:#000;
}
#钮扣周期{
背景色:#404040;
}
.号码{
背景色:#404040;
}
.接线员{
背景色:#A6;
}
#展示{
字体系列:“Orbitron”,无衬线;
边界半径:5px;
边框:纯灰2px;
背景色:#d9d9d9;
保证金:自动;
边缘顶部:30px;
边缘底部:15px;
宽度:80%;
溢出:隐藏;
显示:块;
字号:21px;
填充顶部:12px;
高度:55px;
右侧填充:4px;
文本对齐:右对齐;
}
/*#显示p{
浮动:对;
字体大小:35px;
利润上限:-25px;
}*/
@仅介质屏幕和(最大宽度:375px){
.计算器按钮{
填充:20px;
}
#展示{
边缘顶部:20px;
}
}

删除
%
+
7.
8.
9
/
4.
5.
6.
x
1.
2.
3.
-
0
.
=
  • 首先,您需要将代码包装在onload函数中,以确保只有在节点就绪后才会调用脚本

  • 有许多方法可以清除屏幕以进行下一次计算。其中之一是使用一个标志变量,当完成一个操作时,该变量将被设置为true

  • 对于小数,另一种方法是使用正则表达式过滤掉多余的小数

    /^[+-]?\d+(.\d+)$/

或者简单地说,您可以使用indexOf函数查看十进制是否已经存在。 下面是根据上述建议更新的代码段

<script>

function myFunction(){

     let calculated= false;
     const numbers = document.querySelectorAll('.number');
let display = document.getElementById('display');
let output,
  zero,
  decimal;

// Loop through all buttons to output value to display div
for (let i = 0; i < numbers.length; i++) {
  numbers[i].addEventListener('click', (e) => {
    if(calculated){
        calculated= false;
        display.innerHTML= "";
    }
    output = display.innerHTML += e.target.value;

    if (output.length > 16) {
      alert('Maximum input reached');
    }
  });
};

// Delete button functionality
document.getElementById('buttonDelete').addEventListener('click', (e) => {
  if (e.target.value === 'delete') {
    display.innerHTML = '';
  }
});



document.querySelector('#buttonZero').addEventListener('click', (e) => {
  zero = e.target.value;

  if (display.innerHTML === '') {
    output = display.innerHTML = zero;
  } else if (display.innerHTML === output) {
    output = display.innerHTML += zero;
  }
});

document.querySelector('#buttonDecimal').addEventListener('click', (e) => {
  decimal = e.target.value;
  if (display.innerHTML === '') {
    output = display.innerHTML = display.innerHTML.concat('0.');
  } else if (display.innerHTML === output && display.innerHTML.indexOf(".") < 0) {
    display.innerHTML = display.innerHTML.concat('.');
  }
});


document.querySelector('#buttonEqual').addEventListener('click', (e) => {
  if (display.innerHTML === output) {
    display.innerHTML = eval(output);
    calculated= true;
  } else {
    display.innerHTML = '';
  }
});

let operators = document.querySelectorAll(".operator");
for (var i = 0; i < operators.length; i++) {
  operators[i].addEventListener('click', (e) => {
    operator = e.target.value;

    if (display.innerHTML === '') {
      display.innerHTML = display.innerHTML.concat('');
    } else if (output) {
      display.innerHTML = output.concat(operator);
    }

  });
}


     }





    </script>
</head>
<body onload="myFunction()">
    <div class="container text-center">
        <div class="row">
            <div id="calculatorBody"
                class="col-lg-4 col-lg-offset-4 col-md-6 col-md-offset-3 col-sm-6 col-sm-offset-3 ">
                <div>
                    <div class="row">
                        <div id="display"></div>
                    </div>
                    <div id="buttonSection">
                        <div class="row">
                            <button value="delete" id="buttonDelete"
                                class="calculatorButton operator">Delete</button>
                            <button value="%" id="buttonPercent"
                                class="calculatorButton operator">%</button>
                            <button value="+" id="buttonPlus"
                                class="calculatorButton operator">+</button>
                        </div>
                        <div class="row">
                            <button value="7" id="button7" class="calculatorButton number">7</button>
                            <button value="8" id="button8" class="calculatorButton number">8</button>
                            <button value="9" id="button9" class="calculatorButton number">9</button>
                            <button value="/" id="buttonDivide"
                                class="calculatorButton operator">/</button>
                        </div>
                        <div class="row">
                            <button value="4" id="button4" class="calculatorButton number">4</button>
                            <button value="5" id="button5" class="calculatorButton number">5</button>
                            <button value="6" id="button6" class="calculatorButton number">6</button>
                            <button value="*" id="buttonMultiply"
                                class="calculatorButton operator">x</button>
                        </div>
                        <div class="row">
                            <button value="1" id="button1" class="calculatorButton number">1</button>
                            <button value="2" id="button2" class="calculatorButton number">2</button>
                            <button value="3" id="button3" class="calculatorButton number">3</button>
                            <button value="-" id="buttonMinus"
                                class="calculatorButton operator">-</button>
                        </div>
                        <div class="row">
                            <button value="0" id="buttonZero" class="calculatorButton zero">0</button>
                            <button value="." id="buttonDecimal"
                                class="calculatorButton decimal">.</button>
                            <button value="=" id="buttonEqual" class="calculatorButton equal">=</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>

函数myFunction(){
设计算=假;
const number=document.querySelectorAll('.number');
let display=document.getElementById('display');
让输出,
零,,
十进制的
//循环通过所有按钮输出值以显示div
for(设i=0;i{
如果(计算){
计算=假;
display.innerHTML=“”;
}
输出=display.innerHTML+=e.target.value;
如果(输出长度>16){
警报(“达到最大输入”);
}
});
};
//删除按钮功能
document.getElementById('buttonDelete')。addEventListener('click',(e)=>{
如果(e.target.value==='delete'){
display.innerHTML='';
}
});
document.querySelector(“#buttonZero”).addEventListener('click',(e)=>{
零=e.目标值;
如果(display.innerHTML==''){
output=display.innerHTML=零;
}else if(display.innerHTML==输出){
输出=display.innerHTML+=零;
}
});
document.querySelector(“#buttonDecimal”).addEventListener('click',(e)=>{
十进制=e.目标值;
如果(display.innerHTML==''){
output=display.innerHTML=display.innerHTML.concat('0');
}else if(display.innerHTML==output&&display.innerHTML.indexOf(“.”)小于0){
display.innerHTML=display.innerHTML.concat('.');
}
});
document.querySelector(“#buttonEqual”).addEventListener('click',(e)=>{
if(display.innerHTML==输出){
display.innerHTML=eval(输出);
计算=真;
}否则{
display.innerHTML='';
}
});
let operators=document.queryselectoral(“.operator”);
对于(var i=0;i{
运算符=e.target。