크롬80버전 결제 이슈, 영카트5 주요패치 확인!

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

그누보드5
영카트5
매뉴얼
Q & A
제작의뢰
컨텐츠몰
부가서비스
소모임
커뮤니티
자바스크립트에 버퍼가 생겨서 질문이 있습니다

QA

사수가 없어도 할 수 있다! 초보자를 위한 그누보드 FAQ

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

본문

자바 스크립트로 계산기를 만들었는데, 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;
        //숫자 뒤에 연산자를 입력
    }
}

 

이 글을 내 페이스북 계정으로 보내기 이 글을 내 트위터 계정으로 보내기

이 질문에 댓글 쓰기 :

답변을 작성하시기 전에 로그인 해주세요.
전체 89,974 | RSS
고마운 분의 도움으로 질문을 해결하셨다면, 채택을 눌러서 감사의 마음을 전하세요.
어떻게 질문해야 할지 모른다면 질문하는 방법을 읽어 보신후 질문해 보세요.
QA 내용 검색

회원로그인

진행중 포인트경매

  1. 참여26 회 시작20.08.05 04:15 종료20.08.12 04:15
  2. 참여21 회 시작20.08.04 00:57 종료20.08.11 00:57

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

© SIRSOFT