当前位置: 首页 > 知识库问答 >
问题:

javascript中power ON/OFF按钮的逻辑不工作

何兴安
2023-03-14

我正在尝试使用HTML、CSS和JavaScript构建一个简单的计算器。我为计算器增加了电源开关机的功能。我想要的是,如果电源关闭按钮被点击,那么计算器屏幕不接受任何输入,直到电源打开按钮被点击。(我得到了正确的功能)。我面临的问题是,

  1. 在单击“关闭电源”后单击“打开电源”时,不会显示代码中所述的必需语句。
  2. 即使此后只单击一次按钮,也需要多次输入。

我试了一下,但还是找不出是什么错误。我是JavaScript新手。好心帮帮我。多谢了。代码如下:

null

js prettyprint-override">let screen = document.getElementById('screen');
buttons = document.querySelectorAll('button');
var screenvalue;
let string;
var buttonText = "";
let status = false;


document.getElementById("onbtn").addEventListener('click',(f) => {            
    buttonText = f.target.innerText; 
    if(buttonText == 'ON'){
    status = true;
    screen.value = "Power On";
    screenvalue = ' ';
    string=" ";
     
    }
   
for(item of buttons){
    
    if(status==false){
      console.log("after power off" +string);
      console.log("after power is off" +screenvalue);
      screen.value = "Turn on power";
    }
   else{
    item.addEventListener('click', (e) => {
            buttonText = e.target.innerText;
            
            if(status==true && buttonText == 'X'){
                buttonText = '*';
                string = string + buttonText;
                screenvalue = screenvalue + buttonText;
                screen.value = screenvalue; 
            }

            else if(status==true && buttonText =='AC'){
                string=" ";
                screenvalue = "";
                screen.value = "";
            }

            else if(status==true && buttonText == '='){
                screenvalue = eval(screenvalue);
                string = screenvalue.toString();
                screen.value = screenvalue;
            }

            else if(status==true && buttonText == 'C'){
               string = string.slice(0,-1);
               screenvalue = string;
               screen.value = screenvalue;
            }

           else if(status==true && buttonText == 'OFF'){
                status = false;
                
                screen.value = "Power Off";
                string = " ";
                screenvalue = ""; 
           console.log("value of string in off "+string);
 console.log("value of screenvalue in off "+screenvalue); 
           return;} 
                                
         
                else{
                    if(status == true){
                screenvalue = screenvalue + buttonText;
                screen.value = screenvalue;
                string = screenvalue.toString();}
            }
        })
   }
 }
})
.container{
    text-align: center;
    margin-top: 25px;
}
.calculator{
    display: inline-block;
    border: 2px black;
    background-color: firebrick;
    height: 480px;
    border-radius: 15px;
    padding: 8.5px;



    
}
table{
    margin: auto;
    margin-top: 20px;
}
input{
    font-size: 30px;
    height: 70px;
    border: solid;
    border-color: black;
    border-width: 2.5px;
    border-radius: 24px;
    margin-top:23px;
    width: 368px
}
button{
    margin-top: 2px;
    font-size: 20px;
    background: lemonchiffon;
    width: 92px;
    height: 50px;
    border-radius: 24px;
    padding: 5px;
}
button:hover{
    background-color: plum;
}
button:active{
    background-color: palevioletred;
}
<body>
    <div class="container">
        <h1>Calculator</h1>
        <div class="calculator">
        <input type="text" name="screen" id="screen">
        <table>
            <tr>
                <td><button>(</button></td>
                <td><button>)</button></td>
                <td><button>C</button></td>
                <td><button>/</button></td>
            </tr>

            <tr>
                <td><button>9</button></td>
                <td><button>8</button></td>
                <td><button>7</button></td>
                <td><button>+</button></td>
            </tr>

            <tr>
                <td><button>6</button></td>
                <td><button>5</button></td>
                <td><button>4</button></td>
                <td><button>-</button></td>
            </tr>

            <tr>
                <td><button>3</button></td>
                <td><button>2</button></td>
                <td><button>1</button></td>
                <td><button>X</button></td>
            </tr>

            <tr>
                <td><button>0</button></td>
                <td><button>.</button></td>
                <td><button>=</button></td>
                <td><button>%</button></td>
            </tr>

            <tr>
                <td><button>AC</button></td>
                <td><button id="onbtn">ON</button></td>
                <td><button>OFF</button></td>
                <td><button></button></td>
            </tr>
        </table>
        </div>
    </div>
   
   
</body>

null

共有1个答案

梁浩涆
2023-03-14

您的OnItem事件侦听器中缺少一些代码

document.getElementById("onbtn").addEventListener('click',(f) => {            
  buttonText = f.target.innerText; 
  if(buttonText == 'ON') {
    status = true;
    screen.value = "Power On";
    screenvalue = ' ';
    string=" ";
  } else {
    status = false;
    // Other code
  }
  // render your items
}
 类似资料:
  • 所以我在我的一个程序中使用cardLayout,我试图使它成为当你点击一个按钮时下一个面板加载。我有一个panelHolder类,其中保存了cardlayout,每次按下面板上的按钮时,它都会调用panelHolder类中的一个方法,该方法根据按钮将某个布尔变量设置为true,并调用repaint(其中显示了面板)。由于某种原因,我的按钮坏了,我似乎找不出原因。有人能帮帮我吗?

  • 问题内容: 什么逻辑运营商之间的不同,和位类似物,在使用?各种解决方案的效率是否存在差异? 问题答案: 逻辑运算符对逻辑值进行运算,而按位运算符对整数位进行运算。停止考虑性能,并按其预期目的使用它们。

  • 我有一个问题使添加到购物车按钮工作。不确定是哪一部分代码导致了这个问题。但是,问题的链接是:https://barkerbespoke.com/collections/tie-collection/products/black-wool 你有什么建议?

  • 我在21点程序中无法让点击按钮正常工作。我尝试为setOnAction块中的hit按钮以及lambda编程操作,但是我得到了一个关于变量不是最终变量的错误。所以,我试过这样做,但我不认为我的变量会继续。这可能很简单。如果可以的话,请帮忙。谢谢

  • 20231022 10:00-10:30am 美团优选商品品类运营hr面 一共2面,这是最后一面。 整体感受:HR小姐姐敬业又专业,好像身体不舒服嗓子沙哑还在周日面试,介绍整体组织架构十分细致。 hr先进行了自我介绍,然后开始喊我: 1、自我介绍 2、你的过往经历中,你自己主动去做的职责之外的事情,举个例子 hr对整体组织架构进行了详细介绍,反问环节+面评。

  • 我面临commandButton的问题,它只有在类型为submit时才起作用。有没有人可以看一下,让我知道是否有解决办法?下面的代码非常简单,并有足够的建议来说明我需要什么。方法test()未执行。方法runSubmit已成功执行。 我需要测试方法在没有提交的情况下执行,因为原始页面确实在提交期间执行了验证,test()方法必须在没有提交的情况下执行,因为这是提交之前的一个初步操作。 我正在使用P