我目前正在学习和练习我的前端网页开发技能,用jQuery来创建一个简单的网页应用。我决定做一个简单的计算器。我可以很容易地用一些函数来处理输入的数字作为参数。但是我在制作界面方面遇到了困难。
这是相关的HTML代码:
<h1>Simple Calculator</h1>
<div class="inputbar">
<input
id="calcInput"
type="text"
class="displaycalc"
onkeypress="return /[0-9]/i.test(event.key)"
placeholder="0"
/>
</div>
<div class="container">
<div class="digit seven btn">7</div>
<div class="digit eight btn">8</div>
<div class="digit nine btn">9</div>
<div class="op clear" onclick="clearDisplay()">CE</div>
<div class="digit four btn">4</div>
<div class="digit five btn">5</div>
<div class="digit 6 btn">6</div>
<div class="op multiply btn" data-operator="times">x</div>
<div class="digit one btn">1</div>
<div class="digit two btn">2</div>
<div class="digit three btn">3</div>
<div class="op division btn" data-operator="divide">/</div>
<div class="op changeminus btn">-/+</div>
<div class="digit zero btn">0</div>
<div class="op comma btn">.</div>
<div class="op plus btn" data-operator="plus">+</div>
<div class="op minus btn" data-operator="minus">-</div>
<div id="equal" class="op equal btn">=</div>
</div>
我觉得界面看起来还不错,但真正的问题出在我的外部.js文件上。
let input1 = [];
//this ONLY shows the live numbers pressed
$(".digit").click((evt) => {
let currentValue = $("#calcInput").val();
// Append the clicked button's value to the current input value
$("#calcInput").val(currentValue + evt.target.innerHTML);
});
$(".op").click((evt) => {
input1.push(parseFloat($("#calcInput").val()));//when an OP clicked, input1 value updated
let operator = $(evt.target).data("operator");
inputSecond();
});
$("#equal").click( (evt) => {
switch(operator){
case "plus":
calculation(input1,2,plus);
break;
case "minus":
calculation(input1,2,minus)
break;
default:
break;
}
});
function inputSecond(){
$(".digit").click(() => {
clearDisplay();
$(".digit").click((evt) => {
let currentValue = $("#calcInput").val();
// Append the clicked button's value to the current input value
$("#calcInput").val(currentValue + evt.target.innerHTML);
});
})
}
function plus(num1,num2){
console.log (num1+num2);
}
function minus(num1,num2){
console.log(num1-num2);
}
function times(num1,num2){
console.log(num1*num2);
}
function divide(num1,num2){
console.log(num1/num2);
}
function calculation(num1,num2,operatorFunction){
operatorFunction(num1,num2);
}
function clearDisplay(){
$("#calcInput").val("");
}
我希望有个专家能帮帮我,因为GPT并没有真正帮我达到我想要的效果。
我想让输入“显示”像传统的计算器一样,当我输入完第一个数字后,按下一个运算符,无论是加、减或乘,第二个数字会自动覆盖输入显示的之前的状态。