2014-12-01 17 views
0

저는 JS에 비교적 익숙하며, 숫자를 취한 다음 두 번째 숫자가있는 연산자를 사용하여 전체를 만드는 JavaScript 계산기를 만들려고합니다. 그런 다음 다른 번호를 사용하여 다른 연산자를 사용할 수 있습니다. 그런 다음 지우기 단추를 누를 때까지 계속됩니다. 내 가장 큰 문제는 내 변수의 범위 인 것 같다. 순간에 나는 한자리 숫자를 더하거나 뺍니다. 이 코드가 적어도 하나의 숫자를 곱하고 나누지 않는 이유가 있습니까?자바 스크립트 계산기 - 범위?

다른 생각은 사용되는 두 개의 숫자에 대해 빈 배열로 두 개의 변수를 만드는 것입니다. 그러면 각 활성 버튼을 누를 때마다 특정 배열로 밀어 넣을 수 있습니다. 한 자리 숫자를 사용하는 것이 맞습니까? 미리 감사드립니다! 배우고 계속 나아 지려고 노력하십시오!

// Calculator 
var number = ''; 
var newNumber = ''; 
var operator = ''; 
var totalVal = ''; 
var result = ''; 
var inputCount = 0; 

// Adds clicked numbers to the number variable and then sets value to totalVal 
$('.numbers').on('click', function(){ 
    if(result == ''){ 
     inputCount++; 
     if (inputCount < 2){ 
      number += $(this).text(); 
      $('.inner-screen').text(number); 
      result = number; 
      console.log("number: " + number); 
      console.log("result: " + result); 
     } else { 
      newNumber = $(this).text(); 
     } 
     // number = ''; 
    } else{ 
     newNumber += $(this).text(); 
     $('.inner-screen').text(newNumber); 
    } 
    console.log("number: " + number + ", newNumber: " + newNumber); 
}); 

$('.operators').on('click', function(){ 
    operator = $(this).text(); 
    console.log(operator); 
    $('.inner-screen').text(''); 
}); 

// Resets all the variables when clear button is clicked 
$('.clear').on('click', function(){ 
    number = ''; 
    result = ''; 
    newNumber = ''; 
    operator = ''; 
    totalVal = ''; 
    inputCount = 0; 
    console.log('Clear Button Worked!'); 
    $('.inner-screen').text(''); 
}); 

$('.eval').on('click', function(){ 
    console.log("num1: " + number + ", operator: " + operator + ", num2: " + newNumber); 
    if (operator === " + "){ 
     result = parseFloat(newNumber) + parseFloat(number); 
     console.log(result); 
    } else if (operator === " - "){ 
     result = parseFloat(number) - parseFloat(newNumber); 
     console.log(totalVal); 
    } else if (operator === " X "){ 
     result = parseFloat(newNumber) * parseFloat(number); 
     console.log(result); 
    } else if (operator === "/"){ 
     result = parseFloat(number)/parseFloat(newNumber); 
     console.log(result); 
    } else { 
     console.log("didn't catch"); 
    } 

    $('.inner-screen').text(result); 
    number = ''; 
    newNumber = ''; 
}); 

답변

0

이 코드는 적어도 다중 및 단일 번호를 분할하지 않을 이유가 있습니까?

오른쪽 -o. 나는 무슨 일이 일어나고 있는지 보았다. http://jsfiddle.net/axLhcawf/

: 상태가 eval 함수에 추가로, http://jsfiddle.net/xjegrp58/

새로운 버전 :

number = result; 
result = ''; 
newNumber = ''; 
operator = ''; 
inputCount = 1; 

올드 버전 : 당신이 평가를 누르면하면

, 당신은 어떤 상태를 기억해야

각 시도하십시오 : 2 * 2 = 4, 8을 얻으려면 * 2