프로그래밍 언어/JavaScript

[자바스크립트] 간단한 단위 변환기 만들어보기

2021. 5. 31. 19:12

자바스크립트를 통해서 간단한 단위 변환기를 만들어 보았습니다.

 

구글 단위변환기

 

구글에 단위 변환기를 검색하시면 이렇게 깔끔한 변환기가 나옵니다. 혼공자바스크립트에서의 실습문제를 좀 더 업그레이드해서 이런 변환기를 만들 수 있습니다. 

 

먼저 코드입니다. 

<!DOCTYPE html>
<html>
  <head>
    <title>훈련</title>
    <script>
      document.addEventListener('DOMContentLoaded', () => {
        let leftInput = document.querySelector("#leftInput")
        let rightInput = document.querySelector("#rightInput")
        let p = document.querySelector("p")
        let span = document.querySelector("span")
        const select = document.querySelector("select")
 
        let changeCon = 10
 
        const isNum = (value) => {
          if(!(isNaN(value)))
            return true
          return false
        }
        const calculateForLeft = () => {
          leftInput.value = (rightInput.value * changeCon).toFixed(2)
        }
        const calculateForRight = () => {
          rightInput.value = (leftInput.value / changeCon).toFixed(2)
        }
 
        select.addEventListener('change', (event) => {
          const options = event.currentTarget.options 
          const index = event.currentTarget.options.selectedIndex
          changeCon = Number(options[index].value)
          span.textContent = `${options[index].innerHTML} 는`
          calculateForRight()
        })
 
        leftInput.addEventListener('keyup', (event) => {
          if(isNum(event.currentTarget.value))
          {
            p.textContent = `정상적인 입력입니다`
            p.style.color = "green"
            calculateForRight()
          }
          else 
          {
            p.textContent = `숫자를 입력해 주세요`
            p.style.color = "red"
            rightInput.value = ""
          }
            
        })
        rightInput.addEventListener('keyup', (event) => {
          if(isNum(event.currentTarget.value))
          {
            p.textContent = `정상적인 입력입니다`
            p.style.color = "green"
            calculateForLeft()
          }
          else 
          {
            p.textContent = `숫자를 입력해 주세요`
            p.style.color = "red"
            leftInput.value = ""
          }
        })
      })
    </script>
    <style>
      .frame {
        width: 800px;
        margin-left: auto;
        margin-right: auto;
        border: 1px solid #aaa;
      }
    </style>
  </head>
<body>
  <div class="frame">
    <h1>단위 계산기</h1>
    <hr>
    <input type="text" id="leftInput" size="8"><span>mm 는</span> <input type="text" id="rightInput" size="8"> cm 입니다.
    <br>
    <select>
      <option value="10">mm</option>
      <option value="0.01">m</option>
      <option value="0.393701">inch</option>
    </select>
    <p></p>
  </div>
</body>
</html>
Colored by Color Scripter
cs

간단한 설명을 첨부하자면,

왼쪽input과 오른쪽right를 객체로 받아서 각 input에 keyup이벤트가 일어났을 때 계산을 하게 만들었습니다. 왼쪽input에 값의 입력이 이루어지면 오른쪽input에 계산결과가 뜨게하고 반대로 오른쪽input에 입력이 이루어지면 왼쪽input에 계산결과가 뜨게 했습니다. 
오른쪽input은 cm단위로 고정했고 왼쪽input은 select태그를 통해서 mm, m, inch중에서 고를 수 있게 설정했습니다. 

그리고 숫자가 입력되었는지 isNaN()함수를 통해서 알아내고 p태그에 표현하는 것도 추가했습니다. 정상적인 숫자가 입력되었다면 초록색 글자로 정상적으로 입력되었다고 뜨고 비정상적인 숫자를 입력하면 빨간색 글자로 숫자를 입력해 달라고 표시합니다. 또 비정상적인 입력이 감지되면 입력한 곳의 반대 input의 value를 초기화합니다. 

 

그리고 결과화면도 첨부하겠습니다 

 

숫자를 입력
숫자가 아닌 문자열 입력

이런식으로 숫자를 입력했을 때 정상적으로 단위 변환이 되는 것을 볼 수 있습니다. 

'프로그래밍 언어/JavaScript' 카테고리의 다른 글
  • [자바스크립트 필기] #4 - 제어문(조건문과 반복문)
  • [자바스크립트 필기] #3 - 데이터 타입
  • [자바스크립트 필기] #2 - 표현식과 문
  • [자바스크립트 필기] #1 - 변수
SpaceCowboy
SpaceCowboy
공부한거 기록하는 블로그입니다!!
공부한거 기록하는 블로그공부한거 기록하는 블로그입니다!!
SpaceCowboy
공부한거 기록하는 블로그
SpaceCowboy
전체
오늘
어제
  • 분류 전체보기
    • 프로그래밍 언어
      • C Programming
      • JavaScript
    • Computer Science
      • 자료구조
      • 알고리즘
      • 객체지향
    • 프레임워크
      • Nest.js
      • TypeORM
    • Web Programming
    • 블록체인
      • 기초
    • 데브옵스
      • Git
      • Docker

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • typeormseeding
  • HTML
  • 자바스크립트챌린지
  • 이중연결리스트
  • typeorm3.0
  • 자바스크립트
  • CSS
  • TypeORM
  • JS
  • 복습
  • customrepository
  • nestjs
  • 자바스크립트 필기
  • softDelete
  • 자바스크립트필기
  • 재귀
  • 자료구조
  • typeorm0.3
  • 자료구조필기
  • 논리삭제

최근 댓글

최근 글

hELLO · Designed By 정상우.
SpaceCowboy
[자바스크립트] 간단한 단위 변환기 만들어보기
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.