자바스크립트에 버퍼가 생겨서 질문이 있습니다

자바스크립트에 버퍼가 생겨서 질문이 있습니다

QA

자바스크립트에 버퍼가 생겨서 질문이 있습니다

본문

자바 스크립트로 계산기를 만들었는데, if 안에 잔뜩 우겨들어가져 있는 코드는

 

예를 들어

 

"3+"일 때, -를 누르면 "3-"로 바꿔주기 위해서 기존의 연산자를 지우고 새로 연산자를 입력하는 코드입니다.

이걸 쓰면 Delete를 해서 연산자를 지우고 연산자를 입력할 경우 숫자를 지워버리는 상황이 발생해서 Delete 함수에서 lastOperator를 설정하게 해서, 마지막 글자가 연산자이면 true, 숫자면 false로 해서 나눴습니다.

 

그런데 딜리트를 쓰면 가끔

1846054857_1596150290.8459.png

 

이런 식으로 입력이 들어가 버립니다. 딱 한번 이러는데 무엇이 원인인지 잘 모르겠는데 좀 부탁드립니다

 

 


var numberClicked = false;
var lastOperator = true;
 
function Add(char) {
    var display = document.getElementById('display');
    if (numberClicked == false) {//숫자를 입력하지 않은 상태에서
        if (isNaN(char) == true) {//숫자를 입력하지 않은 상태에서 연산자를 누르면 알람 호출
            Alarm();
            if (display.value != "") {
                if (lastOperator == false) {
                    display.value += char;
                    return lastOperator = true;
                }
                else {
                    display.value = display.value.substring(0, display.value.length - 1);
                    display.value += char;
                }
            }
        }
        else {
            display.value += char;
        } //숫자를 눌렀으면 입력
    }
    else {//이전에 숫자를 입력했다면 numberClicked == true
        display.value += char; //누르는대로 넣는다
    }
    // 숫자/연산자를 눌렀는지 설정한다. 매우 중요함. 지우지 말 것.
    if (isNaN(char) == true) {//숫자가 아닌 것이 참 = 연산자를 눌렀다면
        numberClicked = false; //false로 설정
    } else {
        numberClicked = true;//true로 설정
    }
}

function Delete() {
    var display = document.getElementById('display');
    display.value = display.value.substring(0, display.value.length - 1);
    var lastchar = display.value.charAt(display.value.length - 1);
    if (isNaN(lastchar) == true) {
        return lastOperator = true;
        //기존의 연산자를 지우고 클릭한 연산자를 입력
    } 
    else {
        return lastOperator = false;
        //숫자 뒤에 연산자를 입력
    }
}

 

이 질문에 댓글 쓰기 :

답변을 작성하시기 전에 로그인 해주세요.
전체 1,096
QA 내용 검색
filter #html ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT