웹개발 종합반 2주차 (study)

신예진·2022년 1월 23일
0

(2주차 목표)
javascript를 통해 홈페이지의 움직임을 더해주기

1. 함수 복습 : 홀/짝 판별 onclick 함수 만들기

 function hey(){
	count+=1
   	if (count%2==0){
    		alert('짝수입니다!')
    	}
    	else {
        	alert('홀수입니다!')
     	}
}

// 그리고 원하는 button 요소에를 넣어준다

2. jQuery?

HTML 요소들을 편하게 조작할 수 있게
javascript를 누가 미리 짜둔 것이다 = '라이브러리'라고도 불림
부트스트랩과 유사한 개념으로, javascript로 길고 복잡하게 써야하는 것을
(미리 써둔) jQuery로 보다 직관적으로 쓸 수 있다.

// 전문 개발자들이 짜둔 코드를 잘 가져와서 사용하는 것이기 때문에
   쓰기 전에 꼭 "임포트"를 해야 한다.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

 ** 비교 예시 **
(javascript)
document.getElementByID("element").style.display = "none"
(jQuery - 직관적)
$('#element').hide();

3. jQuery 다뤄보기

** 기본적인 jQuery **
css의 class=""와 마찬가지로 값을 가져오려면 값의 대상을 지칭할 수 있어야 하는데,
jQuery에서는 이를 id=""로 지칭.

1) input 박스의 값을 가져와보기
  $('#url').val('입력을 하고 싶다') 
  
  // #url : id="url"에다가
  // $ : jQuery를 적용하고 싶은데
  // val() : value를 적용하고 싶어.
  // 이때, ()안에 값이 없으면 이미 입력된 값을 가져오고, 값이 있으면 입력을 하는 것.

2) div 보이기/숨기기
  숨이고 싶은 div(강의에서는 class="mypost"라고 묶어둔 박스)에 
  <div class="mypost" id="post-box"> 로 id 지칭.
 
  $('#post-box').hide()
  $('#post-box').show()

3) 태그 내 html 입력하기
  let temp_html = `<button>나는 버튼이다</button>`
  // 이때, ``은 따옴표가 아닌 backtick 이며
     ``안에 들어있는 것은 html이 아닌 문자열로 저장해둔 형태이다
 
  $('#cards-box').append(temp_html)
  // 위에서 저장한 문자열을 jQuery를 사용해 html로 바꿔서 적용해준다
  // 이를 이용해 backtick 안에 원하는 html을 저장해 사용
 

4. jQuery + javascript 조합 연습하기

 기본적으로 원하는 곳에 id 값을 지칭하고 함수를 만들어 적용한다
 
 1) 빈칸 체크 함수 만들기
  function q1() {
      let txt = $('#input-q1').val()
      if (txt == ''){
          alert('입력하세요!')
      }
      else {
          alert(txt)
      }
      
 2) 이메일 판별 함수 만들기
  function q2() {
      let txt = $('#input-q2').val()
      if (txt.includes('@') == true){
          alert(txt.split('@')[1].split('.')[0])
      }
      else {
          alert('이메일이 아닙니다.')
      }
      
 3) html 붙이기/지우기 연습
  function q3() {
      let txt = $('#input-q3').val()
      let temp_html = `<li>${txt}</li>`
      $('#names-q3').append(temp_html)
 
  function q3_remove() {
      $('#names-q3').empty()
      

5. 서버-클라이언트 통신 이해하기

API는 은행 창구와 같은 것!
같은 예금 창구에서도 개인 고객이냐, 기업 고객이냐에 따라 가져와야 하는 것과 처리해주는 것이 다른 것처럼,
클라이언트가 요청할 때에도, "타입"이 존재.

** 2가지 타입 **
GET = 통상적으로, 데이터 조회(read)를 요청할 때
(예시) 영화 목록 조회
POST = 통상적으로, 데이터 생성(create), 변경(update), 삭제(delete) 요청할 때
(예시) 회원가입, 회원탈퇴, 비밀번호 수정

우리는 사실 GET의 천재다.
(GET 예시 1) http://movie.naver.com/movie/bi/m/basic.naver/code=161967#
     /movie/bi/m/basic.naver : 라는 창구에
     code=161967 : 을 들고 갔다
     // 코드 번호를 달리 들고 가면 다른 것을 줌
(GET 예시 2) google.com/search?q=아이폰&sourceid=chrome&ie=UTF-8
     /search? : 라는 창구에
     q=아이폰 : 을 들고 갔다
     &sourceid=chrome, &ie=UTF-8 : 추가적으로 가져갔다
     

6. Ajax

브라우저에서 enter를 치는 것과 마찬가지로,
javascript에서 서버를 요청하는 방법

1) Ajax 기본 골격
$.ajax({
  type: "GET",
  url: "여기에URL을입력",
  data: {},
  success: function(response){
    console.log(response)
  }
})

2) 먼저, 미세먼지 openAPI를 이용해 console에 찍는 연습
$.ajax({
  type: "GET",
  url: "http://spartacodingclub.shop/sparta_api/seoulair",
  data: {},
  success: function (response) {
    let rows= response['RealtimeCityAir']['row']
    for (let i = 0; i < rows.length; i++){
         let gu_name = rows[i]['MSRSTE_NM']
         let gu_mise = rows[i]['IDEX_MVL']
         console.log(gu_name,gu_mise)
    }
    }
})

// 이런 형태의 openAPI 에서 정보를 가져와서

// 이렇게 console에 찍어주기

3) 미세먼지 openAPI를 이용해 업데이트 버튼을 누를 때마다 업데이트되어 새로 찍히게 하기
 function q1() {
   $('#names-q1').empty()
   $.ajax({
     type: "GET",
     url: "http://spartacodingclub.shop/sparta_api/seoulair",
     data: {},
     success: function(response){
        let rows = response['RealtimeCityAir']['row']
        for (let i = 0; i < rows.length; i++){
             let gu_name = rows[i]['MSRSTE_NM']
             let gu_mise = rows[i]['IDEX_MVL']

             let temp_html = ``

             if (gu_mise > 120) {
                 temp_html = <li class="bad">${gu_name} : ${gu_mise}</li>
             } else {
                 temp_html = <li>${gu_name} : ${gu_mise}</li>
             }

             $('#names-q1').append(temp_html)
         }
      }
    })
    }
    
    
// 여기서 강조점을 주고 싶다면, <style> 안에
.bad{
	color : red;
}
넣고 class="bad"사용해 꾸며줄 수 있다.

7. Ajax 연습하기

1) 서울시 따릉이 openAPI

(소감)
이번 주는 사실 openAPI가 연결이 안될 때가 많아 코드를 구현하는데 어려움이 있었다.
내용 자체는 어렵지 않지만 헷갈렸던 것은,
1. response[][]로 붙이는 것
2. ${}와 $('#')

(궁금한 점)
1. openAPI 사이트가 연결이 안될때가 있는데 왜일까?
2. 맞는 코드를 짜서 다시 크롬으로 열때도 가끔 안된다,, 왜일까???

0개의 댓글