0
我想讓我的第一個計算器與香草JS。我的邏輯如下。爲什麼計算器工作不正常?
- 你一個數字(1/2)
- 你打一個符號(正/負)點擊
- 你點擊第二個數字
- 你打等號,並得到一個答案。
我的等號按鈕通過加號和減號獲得不同的功能。但是,它不能正常工作。 1 - 2 = -1
但後來當你做+2
它得到-3
而不是1
。
出了什麼問題?
var screen = document.getElementById('hres');
var numI = 0;
var numII = 0;
document.getElementById('one').addEventListener("click", uno);
function uno() {
screen.value = 1;
}
document.getElementById('two').addEventListener("click", duo);
function duo() {
screen.value = 2;
}
function plus() {
numI = screen.value;
document.getElementById('eql').addEventListener('click', equalP);
}
function equalP() {
numII = screen.value;
screen.value = +numI + +numII;
}
function minus() {
numI = screen.value;
document.getElementById('eql').addEventListener('click', equalM);
}
function equalM() {
numII = screen.value;
screen.value = numI - numII;
}
#hres {
position: relative;
text-align: center;
line-height: 50px;
font-size: 22pt;
width: 200px;
height: 50px;
margin-bottom: 65px;
}
#sum {
display: inline-block;
font-size: 20pt;
border: 2px solid black;
margin: 5px;
text-align: center;
line-height: 50px;
width: 200px;
height: 50px;
background-color: goldenrod;
}
#one {
display: inline-block;
font-size: 20pt;
width: 50px;
height: 50px;
background-color: hotpink;
text-align: center;
line-height: 50px;
border: 2px solid black;
}
#two {
display: inline-block;
font-size: 20pt;
width: 50px;
height: 50px;
background-color: hotpink;
text-align: center;
line-height: 50px;
border: 2px solid black;
}
#eql {
display: inline-block;
font-size: 20pt;
border: 2px solid black;
margin: 5px;
text-align: center;
line-height: 50px;
width: 200px;
height: 50px;
background-color: skyblue;
transition: .3s;
}
#sub {
display: inline-block;
font-size: 20pt;
border: 2px solid black;
margin: 5px;
text-align: center;
line-height: 50px;
width: 200px;
height: 50px;
background-color: lightgray;
}
<input id="hres" readonly></input><br>
<div id="one">1</div>
<div id="two">2</div><br>
<button onclick="plus()" id="sum">+</button>
<button onclick="minus()" id="sub">-</button>
<button id="eql">=</button>
1 - 2 = -1但是當你做了+2它得到-3而不是1.你檢查過嗎? – CeeJay
您不斷添加這些事件處理程序,這意味着當您單擊等於按鈕時,所有這些計算都會多次運行。這是一個固定版本:https://jsfiddle.net/khrismuc/5cqjvwnt/ –
將'console.log'添加到'equalP'和'equalM',你會看到@ChrisG正在談論什麼。 –