코딩 / / 2022. 6. 26. 17:09

[스파르타 코딩클럽] - 웹개발 종합반 2주차

반응형

html 만해도 시원시원하게 이해되던 강의가 javascript로 올라가면서 확실히 난이도가 올라감을 느꼈다.

 

 

[2주차 2~5강] JQuery 연습하기

처음에는 1주차처럼 하나하나 떠먹여주는 가 싶더니, 2-5강에서 나온 퀴즈가 발목을 잡았다.

function q1() {
    let value = $('#input-q1').val();
    {
        if (value == '')
            alert('입력하세요');
        else (
            alert(value));
    }
}

"input-q1"의 데이터를 value라는 값으로 지정, value가 빈칸(")이면 '입력하세요'라는 메세지를 출력하고, value에 뭔가 적혀있으면 그 값을 출력한다. 

 

앞의 강의를 대충들었더니 let 을 쓸줄 몰라서 값을 지정하느라 한참 해메고 달러기호($)를 빼먹어서 계속 실수가 있었다. 처음에는 let조차 쓸줄몰라서 혼자서 엄청 고민하다가 결국 1주차에서 배운 가르침을 새겨 빠르게 해설강의로 넘어가서 정답을 외우기로 했다. 

 

 

function q3() {
    let newName = $('#input-q3').val();
    if (newName == '') {
        alert('이름을 입력하세요');
        return;
    }
    let temp_html = '<li>${newName}</li>';
    $("#names-q3").append(temp_html)
}
function q3() {
    let newName = $('#input-q3').val();
    if (newName == '') {
        alert('이름을 입력하세요');
        return;
    }
    let temp_html = `<li>${newName}</li>`;
    $("#names-q3").append(temp_html)
}

input-q3에 적힌 내용을 names-q3의 다음줄에 추가한다.

 

위의 코드는 내가 백틱(`) 대신 작은따옴표(')를 사용해서 입력한 값이 아닌 ${newName}으로 추가되던걸 한참을 고민하다 결국 질문글까지 올리고 해결한 사례이다. 간단한 퀴즈에도 실수를 찾는데 한참걸리는데, 코드가 길어지면 어떻게 될지.. 상상만해도 아찔하다. 

 

 

 

 

 

 

[2주차 6~11강] Ajax 연습하기

$.ajax({
    type: "GET",
    url: "여기에URL을입력",
    data: {},
    success: function (response) {
        
    }
})

ajax의 기본 골격. 이걸 베이스로 url에서 데이터를 불러와 내 페이지에 넣는 작업을 한다.

 

이때, console.log(response)를 반드시 한번 찍어서 url의 response를 확인한다.

내가 붙여넣은 url을 불러오면 뭐가 나오는지 처음 확인하는 과정

<script>
    function q1() {
        $('#body').empty()
        $.ajax({
            type: "GET",
            url: "http://spartacodingclub.shop/sparta_api/seoulbike",
            data: {},
            success: function (response) {
                let rows = response['getStationList']['row']
                for (let i = 0; i < rows.length; i++) {
                    let stnname = rows[i]['stationName']
                    let rackTotCnt = rows[i]['rackTotCnt']
                    let parkingBikeTotCnt = rows[i]['parkingBikeTotCnt']
                    console.log(stnname, rackTotCnt, parkingBikeTotCnt)

                    let temp_html = ``

                    if (parkingBikeTotCnt < 5) {
                        temp_html = `<tr class="taken">
                                        <td>${stnname}</td>
                                        <td>${rackTotCnt}</td>
                                        <td>${parkingBikeTotCnt}</td>
                                        </tr>`;
                    } else {
                        temp_html = `<tr>
                                        <td>${stnname}</td>
                                        <td>${rackTotCnt}</td>
                                        <td>${parkingBikeTotCnt}</td>
                                        </tr>`;
                    }
                    $('#body').append(temp_html)
                }
            }
        })
    }
</script>

json 형태 (왼쪽)으로 나열되어있는 서울시 따릉이 데이터를 불러와 거치된 따릉이수가 5개 이하면 붉은색으로 표시하기.

 

for (let i = 0; i < rows.length; i++)

이 코드의 원리는 잘 모르겠지만, 그저 row를 처음부터 끝까지 한번 쭉 범위설정하는 정도라고 이해했다.

 

let stnname = rows[i]['stationName']
let rackTotCnt = rows[i]['rackTotCnt']
let parkingBikeTotCnt = rows[i]['parkingBikeTotCnt']

let을 이용해 i 번째 row에서 출력할 값을 하나씩 지정해준다.

 

let temp_html = ``

if (parkingBikeTotCnt < 5) {
    temp_html = `<tr class="taken">
                    <td>${stnname}</td>
                    <td>${rackTotCnt}</td>
                    <td>${parkingBikeTotCnt}</td>
                    </tr>`;
} else {
    temp_html = `<tr>
                    <td>${stnname}</td>
                    <td>${rackTotCnt}</td>
                    <td>${parkingBikeTotCnt}</td>
                    </tr>`;
}
$('#body').append(temp_html)

그리고 지정해준 값을 html 뼈대에 삽입하여 표시되도록 만든다. <tr></tr> 과 <td></td>는 표를 만드는 태그인가 보다.

 

다소 번거로웠던 것은 처음에 temp_html을 빈칸(``)으로 지정하고 그 뒤에 if else구문에서 temp_html을 재정의하는 과정이었다. let을 언제쓰고 언제 안쓰는지가 상당히 헷갈리지만, 일단 이렇게하는가보다 알아두기만 하고 넘어갔다. 

 

 

 

 

[2주차 숙제] 팬명록에 실시간 서울시 온도 추가하기

url (http://spartacodingclub.shop/sparta_api/weather/seoul) 에서 온도값 (temp)을 불러와 팬명록의 밑에 한줄 삽입하는 것이 숙제였다.

<div class="mytitle">
    <h1>윤하(YOUNHA) 팬명록</h1>
    <p>현재기온 : <span id="temperature">00.00</span>도</p>
</div>

<span></span>은 그 자체로는 의미는 없지만 한 줄 안에서도 특정한 값에 id나 class를 부여하고자 할때 사용한다.

 

<script>
    $(document).ready(function () {
        $.ajax({
            type: "GET",
            url: "http://spartacodingclub.shop/sparta_api/weather/seoul",
            data: {},
            success: function (response) {
                let temp = response['temp']
                $('#temperature').text(temp)
                console.log(temp)
            }
        })
    });
</script>

최종 결과물. url에서 temp를 가져와 .text를 이용한다. 아까 <span>을 통해 태그해준 온도 부분을 .text를 이용해 실시간 온도로 교체하면 숙제는 끝!

$(document).ready(function ()

숙제하는 과정에서 덤으로 알려준 코드. 페이지 로딩이 끝나면 발동하는 function이다. 

 

 

 

마치며

2주차는 생각보다 까다로운 코드들이 있고 오류도 찾느라 강의시간에 비해서 꽤 많은 시간을 소요했다. 처음엔 뭐가뭔지 몰라 버벅거렸지만, 복사붙여넣기를 조금씩 하다보니 코드를 직접 백지에서 써내려가진 못해도, 아는 코드를 이용하여 과제를 수행하는 정도는 금방 따라잡을 수 있었다.

 

 

프로그래밍에 있어서 코드는 많고 응용할수 있는 조합도 엄청나다. 모든 코드를 다 외우는 것은 불가능하다. 단지 아는것을 조합하거나 상황에 맞게 구글링 하여 새로운 코드를 배우고, 조금씩 응용하여 써먹으면서 코딩 실력이 늘어나는 것 같다. 베테랑 프로그래머들도 오랜시간 다양한 코드를 조합해보고 경험하면서 생긴 응용력을 바탕으로 베테랑이 되었겠구나 생각할 수 있는 한주였다. 

 

 

다음주에는 기대하던 파이썬을 배운다고 하니 더욱 즐거운 코딩수업이 예상된다. 

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유