본문 바로가기
SeSAC

[새싹X코딩온] 풀스택 2주차 회고록 - 2 | javascript 과제

by 리잼 2023. 7. 30.
반응형

js 실습

계산기

dom_ex.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>DOM 계산기 실습</title>
        <script defer src="/04-javascript-dom/js/dom_ex.js"></script>
    </head>
    <body>
        <div id="container">
            <span>값1:</span><input type="text" id="value1" />
            <br />
            <span>값2:</span><input type="text" id="value2" />
            <br />
            <span>연산자:</span><input type="text" id="calc" />
            <br />
            <span>결과:</span><input type="text" id="result" />
            <br />
        </div>
        <button type="submit" id="sub">계산하기</button>
        <button type="reset" id="reset">초기화</button>
    </body>
</html>

dom_ex.js

const inputs = document.querySelectorAll('input');
const val1 = document.getElementById('value1');
const val2 = document.getElementById('value2');
const calc = document.getElementById('calc');
const result = document.getElementById('result');

const sub = document.getElementById('sub');
sub.addEventListener('click', function () {
    if (calc.value === '+') {
        result.value = Number(val1.value) + Number(val2.value);
    } else if (calc.value === '-') {
        result.value = Number(val1.value) - Number(val2.value);
    } else if (calc.value === '*') {
        result.value = Number(val1.value) * Number(val2.value);
    } else if (calc.value === '/') {
        result.value = Number(val1.value) / Number(val2.value);
    }
});

const reset = document.getElementById('reset');
reset.addEventListener('click', function () {
    for (let input of inputs) {
        input.value = '';
    }
});

 

방명록 만들기

dom_ex2.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>DOM 방명록</title>
        <script defer src="/04-javascript-dom/js/dom_ex2.js"></script>
    </head>
    <style>
        label {
            display: inline-block;
            text-align: center;
            width: 50px;
            font-weight: bold;
        }

        #content {
            width: auto;
        }

        table {
            width: 400px;
            height: 100px;
        }
    </style>
    <body>
        <div id="container">
            <div class="create">
                <label for="creater">작성자</label>
                <input type="text" id="creater" />
            </div>
            <div class="content">
                <label for="content">내용</label>
                <input type="text" id="content" />
            </div>
            <br />
            <button>작성</button>
        </div>
        <br>
        <table border="1">
            <th>번호</th>
            <th>작성자</th>
            <th>내용</td>
            <th class="date">작성일</th>
            <tr>
                <!-- <td style="padding-left: 10px;">1</td>
                <td style="text-align: center;">김강민</td>
                <td style="padding-left: 10px;">여러분 반가워요</td>
                <td style="text-align: center;">2022-07-14 15: 3</td> -->
            </tr>
        </table>
    </body>
</html>

dom_ex2.js

const create = document.getElementById('creater');
const content = document.getElementById('content');
const write = document.querySelector('button');

let now = new Date();
let index = 0;

const th = document.querySelector('table');

write.addEventListener('click', () => {
    // console.log(create.value, content.value, now.toLocaleString());
    let cnt = (index += 1);
    const tr = document.createElement('tr');
    tr.innerHTML = `<td style="padding-left: 10px;">${cnt}</td>
    <td style="text-align: center;">${create.value}</td>
    <td style="padding-left: 10px;">${content.value}</td>
    <td style="text-align: center;">${now.toLocaleString()}</td>`;
    th.append(tr);
});

문제를 풀때 바로 코드를 치는게 아니라

어떤 메서드를 사용할지, 어떻게 구현할지 생각을 먼저 하고 코드를 짜야한다

집을 짓듯이 하나하나 쌓아 올리는 식으로 .

먼저 이런식으로 껍데기만 만들어 놓고 그다음에 구현해 나가는 방식으로 과제를 풀어봤다.

 

document 속성으로 ElementById를 쓸지, querySelector를 쓸지 아직 잘 판단을 못하겠다

다른 분들이 푼 방법을 보고 이렇게도 풀 수 있구나 싶은 것도 재밌다

구현하는거에 정답은 없다지만 최적화된 코드를 적을 수 있게 더 공부해야지

 

알바 때문에 복습을 많이 못한게 아쉽다

제한된 상황에서 이제 스터디도 해야 할텐데 걱정이 앞선다

반응형