2017-12-16 8 views
1

私のJS電卓は、操作が何であっても0の出力を与え続けます。私はコンソールを何度もチェックしましたが、エラーはありません。私の変数が関数であるかどうかを確認しましたが、何もありません。変数のいずれかが相互参照しているかどうかはわかりません。私はJavaScriptが初めてです。私のJavaScriptの計算機では、出力が0になるのはなぜですか?

マイ電卓:

var firstNo = 0; 
 
var secondNo = 0; 
 
var currentNo = 0; 
 
var addedNo = 0; 
 

 
function updateDisplay(nos) { 
 

 
var screenn = document.getElementById('display'); 
 
var scdata = document.getElementById('display').innerHTML; 
 

 
String(nos); 
 
String(scdata); 
 

 
screenn.innerHTML = scdata + nos; 
 
if (currentNo==0) { 
 

 

 
addedNo = String(firstNo); 
 

 
addedNo = addedNo + nos; 
 

 
firstNo = Number(addedNo); 
 

 
}if (currentNo==1) { 
 

 
addedNo = String(secondNo); 
 

 
addedNo = addedNo + nos; 
 

 
secondNo = Number(addedNo); 
 

 

 
} \t 
 

 
} 
 

 
function clearScreen() { 
 
\t 
 
document.getElementById('display').innerHTML = ""; 
 
firstNo = 0; 
 
secondNo = 0; 
 
currentNo = 0; 
 
\t 
 
} 
 

 
function setOperator(opo) { 
 
\t 
 
var operator = opo; 
 
currentNo = currentNo + 1; \t 
 
document.getElementById('display').innerHTML = ""; 
 
\t 
 
} 
 

 
function calculate() { 
 
\t 
 
if (operator="+") { 
 
\t 
 
document.getElementById('display').innerHTML = firstNo + secondNo; 
 
firstNo = 0; 
 
secondNo = 0; 
 
currentNo = 0; \t 
 
\t 
 
}if (operator="*") { 
 
\t 
 
document.getElementById('display').innerHTML = firstNo * secondNo; \t 
 
firstNo = 0; 
 
secondNo = 0; 
 
currentNo = 0; 
 
\t 
 
}if (operator="/") { 
 
\t 
 
document.getElementById('display').innerHTML = firstNo/secondNo; \t 
 
firstNo = 0; 
 
secondNo = 0; 
 
currentNo = 0; 
 
\t 
 
}if (operator="-") { 
 
\t 
 
document.getElementById('display').innerHTML = firstNo - secondNo; \t 
 
firstNo = 0; 
 
secondNo = 0; 
 
currentNo = 0; 
 
\t 
 
} 
 
\t 
 
\t 
 
}
#keypad { 
 
    display: table; 
 
} 
 

 
.row { 
 
    display: table-row; 
 
} 
 

 
#display { 
 
    background-color: yellow; 
 
}
<body> 
 
    <h1 id='display'></h1> 
 
    <div id='keypad'> 
 
    <div class='row'> 
 
     <button onclick='updateDisplay(1)'>1</button> 
 
     <button onclick='updateDisplay(2)'>2</button> 
 
     <button onclick='updateDisplay(3)'>3</button> 
 
     <button onclick='setOperator("+")'>+</button> 
 
    </div> 
 
    <div class='row'> 
 
     <button onclick='updateDisplay(4)'>4</button> 
 
     <button onclick='updateDisplay(5)'>5</button> 
 
     <button onclick='updateDisplay(6)'>6</button> 
 
     <button onclick='setOperator("-")'>-</button> 
 
    </div> 
 
    <div class='row'> 
 
     <button onclick='updateDisplay(7)'>7</button> 
 
     <button onclick='updateDisplay(8)'>8</button> 
 
     <button onclick='updateDisplay(9)'>9</button> 
 
     <button onclick='setOperator("/")'>/</button> 
 
    </div> 
 
    <div class='row'> 
 
     <button onclick='updateDisplay(".")'>.</button> 
 
     <button onclick='updateDisplay(0)'>0</button> 
 
     <button onclick='clearScreen()'>X</button> 
 
     <button onclick='setOperator("*")'>*</button> 
 
    </div> 
 
    <div class='row'> 
 
     <button onclick='calculate()'>=</button> 
 
    </div> 
 
    </div> 
 
</body>

これで任意の助けいただければ幸いです。

+2

あなたはどう思いますかなど、いくつかの構文エラーを明らかにすべきである '文字列(NOS);'しているのですか?名前は 'Number(firstNo)'のために入りますか?このタイプの鋳造はうまくいくが、奉仕やその他の使用がなければ、それは無効になる。 –

+3

他のいくつかのヒント '='は代入演算子で、 'if'節であっても値を比較しません。厳密な比較のために '=='またはより良い '==='が必要です。割り当てられた値のいわゆる[truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy)値の句の結果が返されます。 –

+0

まだ動作していません:( –

答えて

1

- メインスクリプトの上部にvar operator = ""を配置する必要があります。 - if(operator = {yourOperator})をif(operator == {yourOperator})に変更する必要があります

注意: "="を使用する代わりに "="を使用して構文/論理エラーを作成しました。または "==="、var "演算子"をローカルにするもう1つの論理エラーです。 次回は、あなたのスクリプトのトップに "strict"を使います。それはあなたに作られたもの "であれば(演算子=" + ")"

var firstNo = 0; 
 
var secondNo = 0; 
 
var currentNo = 0; 
 
var addedNo = 0; 
 
//FIRST CHANGE 
 
var operator= "" 
 

 
function updateDisplay(nos) { 
 

 
var screenn = document.getElementById('display'); 
 
var scdata = document.getElementById('display').innerHTML; 
 

 
String(nos); 
 
String(scdata); 
 

 
screenn.innerHTML =scdata + nos; 
 
if (currentNo==0) { 
 

 

 
addedNo = String(firstNo); 
 

 
addedNo = addedNo + nos; 
 

 
firstNo = Number(addedNo); 
 

 
}if (currentNo==1) { 
 

 
addedNo = String(secondNo); 
 

 
addedNo = addedNo + nos; 
 

 
secondNo = Number(addedNo); 
 

 

 
} \t 
 

 
} 
 

 
function clearScreen() { 
 
\t 
 
document.getElementById('display').innerHTML = ""; 
 
firstNo = 0; 
 
secondNo = 0; 
 
currentNo = 0; 
 
\t 
 
} 
 

 
function setOperator(opo) { 
 
//SECOND CHANGE 
 
operator = opo; 
 

 
currentNo = currentNo + 1; \t 
 
document.getElementById('display').innerHTML = ""; 
 
\t 
 
} 
 

 

 

 
function calculate() { 
 
    //THIRD CHANGE 
 
if (operator =="+") { 
 
\t 
 
document.getElementById('display').innerHTML = parseFloat(firstNo) + parseFloat(secondNo); 
 
console.log(firstNo) 
 
firstNo = 0; 
 
secondNo = 0; 
 
currentNo = 0; \t 
 
\t 
 
} 
 
    //FORTH CHANGE 
 
if (operator =="*") { 
 
\t 
 
document.getElementById('display').innerHTML = firstNo * secondNo; \t 
 
firstNo = 0; 
 
secondNo = 0; 
 
currentNo = 0; 
 
\t 
 
} 
 
    //FITH CHANGE 
 
if (operator =="/") { 
 
\t 
 
document.getElementById('display').innerHTML = firstNo/secondNo; \t 
 
firstNo = 0; 
 
secondNo = 0; 
 
currentNo = 0; 
 
\t 
 
} 
 
    //SIXTH CHANGE 
 
    if (operator =="-") { 
 
\t 
 
document.getElementById('display').innerHTML = firstNo - secondNo; \t 
 
firstNo = 0; 
 
secondNo = 0; 
 
currentNo = 0; 
 
\t 
 
} 
 
\t 
 
\t 
 
}
#keypad { 
 
    display: table; 
 
} 
 

 
.row { 
 
    display: table-row; 
 
} 
 

 
#display { 
 
    background-color: yellow; 
 
}
<body> 
 
    <h1 id='display'></h1> 
 
    <div id='keypad'> 
 
    <div class='row'> 
 
     <button onclick='updateDisplay(1)'>1</button> 
 
     <button onclick='updateDisplay(2)'>2</button> 
 
     <button onclick='updateDisplay(3)'>3</button> 
 
     <button onclick='setOperator("+")'>+</button> 
 
    </div> 
 
    <div class='row'> 
 
     <button onclick='updateDisplay(4)'>4</button> 
 
     <button onclick='updateDisplay(5)'>5</button> 
 
     <button onclick='updateDisplay(6)'>6</button> 
 
     <button onclick='setOperator("-")'>-</button> 
 
    </div> 
 
    <div class='row'> 
 
     <button onclick='updateDisplay(7)'>7</button> 
 
     <button onclick='updateDisplay(8)'>8</button> 
 
     <button onclick='updateDisplay(9)'>9</button> 
 
     <button onclick='setOperator("/")'>/</button> 
 
    </div> 
 
    <div class='row'> 
 
     <button onclick='updateDisplay(".")'>.</button> 
 
     <button onclick='updateDisplay(0)'>0</button> 
 
     <button onclick='clearScreen()'>X</button> 
 
     <button onclick='setOperator("*")'>*</button> 
 
    </div> 
 
    <div class='row'> 
 
     <button onclick='calculate()'>=</button> 
 
    </div> 
 
    </div> 
 
</body>

+0

私を数秒でビート:) – Mike

+0

aahh申し訳ありません@MikeWood:D –

関連する問題