INPUT 출력하기

◇ JS 실습 포스팅 시리즈 ◇

  1. 입력 데이터 출력 실습 - 현재 글
  2. n초 마다 사진 바꾸기
  3. 버튼위에 마우스 올려 사진 바꾸기
  4. 버튼위에 마우스 올려 사진 바꾸기2
  5. 자식창에서 부모창 정보 수정 하기
  6. 야식 주문 프로그램 만들기

다음과 같이 입력을 하면 화면에 바로 출력하는 프로그램을 만들려고 한다. JS실습이기 때문에, HTML과 CSS에 대한 부분 설명보다는 JS에 초점을 맞추어 글을 쓸 것이다.

1104js

클릭해 결과 화면 보기 - simple.html

받은 인풋을 화면에 추가해보자.

HTML

  • 화면 구성은 크게 두가지, input을 받아들이는 table 영역과 결과를 표시하는 target 영역으로 나뉘어져있다. 아주 간단히 표현하자면 다음과 같다.
<div class="wrapper">
    <table>
        <!--각종 input 태그들-->
        <!--인풋 버튼-->
	</table>

	<div id="target">
    <!--결과를 표시할 구역-->
	</div>
</div>
  • 버튼이 눌리면 이벤트가 발생시키기 위해 input 태그 button 속성에서 onclick =”함수;”를 한다. (이 방법은 html에 js가 섞인 형식이라서 별로 좋지는 않지만 기존 코드에 많이 존재한다고 한다. 다른 방법은 여기서 확인)

    HTML 코드

    <input type="button" id="btn" onclick ="register();" value="등록">
    

    JS코드

    function register(){
        //code
    }
    
  • 그 외 그냥 input 태그 채워주면 된다. 어떻게 하는지 모르면 여기 를 참고 해주세요.

전체코드

<body>
    <div class="wrapper">
        <h1>[ 꼬리표 만들기 ]</h1>
        <table>
            <tr>
               <td>
 <label for="username">이름 : <input type="text" id="username" placeholder="이름을 입력하세요"></label> &nbsp;
 <label for="kor">국어 : <input class="score" type="text" id="kor"></label> &nbsp;
 <label for="eng">영어 : <input class="score" type="text" id="eng"></label> &nbsp;
 <label for="mat">수학 : <input class="score" type="text" id="mat"></label> &nbsp;
 <input type="button" id="btn" onclick ="register();" value="등록">
               </td>
            </tr>
        </table>
        <hr> <br>

        <h2> [ 결과 ] </h2>
        <div id="target">
        </div>
    </div>
</body>

JS

  • window.onload = function(){ //code }는 화면에 html과 css의 로드가 끝나기를 기다린 후 js를 실행할 수 있게 해준다. 로드 전에 js가 실행되면 오류가 생길 수 있기 때문에.
  • document.getElementById(‘id’) 는 id를 이용해 js에서 html 의 요소에 접근하게 해준다.
  • htmlObject.innerHTML 는 좌변에 사용해 htmlObject의 내용을 바꿀 수도 있고, 우변에 사용해 htmlObject의 값을 가져올 수 있다. 자세한 내용은 클릭
  • 표에다가 출력하는게 아니면 코드가 간단해지겠지만, 난 표에다 하고싶어서 아래처럼 했다.

HTML CSS 로딩이 끝난 후, target이라는 id를 가진 요소를 찾아서 거기에 우변에 있는 문자열을 쓴다.

window.onload = function(){
    document.getElementById('target').innerHTML = '<table border="1px"><tr><td>번호</td><td>이름</td><td>국어</td><td>영어</td><td>수학</td><td>합계</td><td>평균</td></tr>'
    info = '<table border="1px"><tr><td>번호</td><td>이름</td><td>국어</td><td>영어</td><td>수학</td><td>합계</td><td>평균</td></tr>'
}
  • register이라는 함수는 어차피 버튼을 누를 후에 실행되니까( html css 로딩 후), window.onload에 넣지 않아도 된다.
  • input tag에서 값을 가지고 올때는 .innerHTML 이 아니라 .value를 사용해야한다.
  • 이름이 한 글자 이상 들어갔는지, 점수는 숫자로만 이루어졌는지 확인하고 target 영역에 출력해준다.(target은 input이 아니라 div 태그니까 .value가 아니라 .innerHTML 을 써야한다.) 함수를 어떻게 써야하는지 모른다면 여기
var index=1;
window.onload = function(){
    document.getElementById('target').innerHTML = '<table border="1px"><tr><td>번호</td><td>이름</td><td>국어</td><td>영어</td><td>수학</td><td>합계</td><td>평균</td></tr>'
    info = '<table border="1px"><tr><td>번호</td><td>이름</td><td>국어</td><td>영어</td><td>수학</td><td>합계</td><td>평균</td></tr>'
}
function register() {
    var name = document.getElementById("username").value;
    if(name.trim().length==0){
        alert("이름을 제대로 입력해 주세요")
        return;
    }
    var kor = document.getElementById('kor').value;
    var eng = document.getElementById('eng').value;
    var mat = document.getElementById('mat').value;
    if(!(Number(kor)&&Number(eng)&&Number(mat))){
        alert("숫자만 입력해주세요");
        document.getElementById('kor').value = "";
        document.getElementById('eng').value = "";
        document.getElementById('mat').value = "";
        return;
    }
    var sum = parseInt(kor)+parseInt(eng)+parseInt(mat);
    var avg = sum/3;
    document.getElementById('username').value = "";
    document.getElementById('kor').value = "";
    document.getElementById('eng').value = "";
    document.getElementById('mat').value = "";
    info = info +"<tr><td>"+ index + "</td><td>" + name +"</td><td>"+kor+"</td><td>"+eng+ "</td><td>" + mat+"</td><td>"+sum +"</td><td>"+(Math.round(avg*10)/10) +"</td></tr>";
    index++;
    document.getElementById("target").innerHTML = info;
}

전체 코드!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div.wrapper{
            width : 900px;
            margin: 0 auto;
            text-align: center;
        }
        h1, h2, table {
            text-align: center;
        }
        input.score {
            width : 100px;
        }

        #target table{
          width: 900px;
          margin: 0 auto;
        }
        table tr:nth-child(odd){background-color: skyblue;}
        table tr:nth-child(even){background-color: pink;}
        table tr:first-child{background-color: white}

    </style>
    <script>
        var index=1;
window.onload = function(){
    document.getElementById('target').innerHTML = '<table border="1px"><tr><td>번호</td><td>이름</td><td>국어</td><td>영어</td><td>수학</td><td>합계</td><td>평균</td></tr>'
    info = '<table border="1px"><tr><td>번호</td><td>이름</td><td>국어</td><td>영어</td><td>수학</td><td>합계</td><td>평균</td></tr>'
}
function register() {
    var name = document.getElementById("username").value;
    if(name.trim().length==0){
        alert("이름을 제대로 입력해 주세요")
        return;
    }
    var kor = document.getElementById('kor').value;
    var eng = document.getElementById('eng').value;
    var mat = document.getElementById('mat').value;
    if(!(Number(kor)&&Number(eng)&&Number(mat))){
        alert("숫자만 입력해주세요");
        document.getElementById('kor').value = "";
        document.getElementById('eng').value = "";
        document.getElementById('mat').value = "";
        return;
    }
    var sum = parseInt(kor)+parseInt(eng)+parseInt(mat);
    var avg = sum/3;
    document.getElementById('username').value = "";
    document.getElementById('kor').value = "";
    document.getElementById('eng').value = "";
    document.getElementById('mat').value = "";
    info = info +"<tr><td>"+ index + "</td><td>" + name +"</td><td>"+kor+"</td><td>"+eng+ "</td><td>" + mat+"</td><td>"+sum +"</td><td>"+(Math.round(avg*10)/10) +"</td></tr>";
    index++;
    document.getElementById("target").innerHTML = info;

    </script>
</head>
<body>
    <div class="wrapper">
        <h1>[ 꼬리표 만들기 ]</h1>
        <table>
            <tr>
               <td>
                   <label for="username">이름 : </label><input type="text" id="username" placeholder="이름을 입력하세요"> &nbsp;
                   <label for="kor">국어 : </label><input class="score" type="text" id="kor"> &nbsp;
                   <label for="eng">영어 : </label><input class="score" type="text" id="eng"> &nbsp;
                   <label for="mat">수학 : </label><input class="score" type="text" id="mat"> &nbsp;
                   <input type="button" id="btn" onclick ="register();" value="등록">
               </td>
            </tr>
        </table>
        <hr> <br>

        <h2> [ 결과 ] </h2>
        <div id="target">
        </div>
    </div>
</body>
</html>


© 2018. All rights reserved.

Powered by Hydejack v8.5.2