스파르타코딩클럽 웹프로그래밍 공부 2주차 개발일지 기록
jQuery 기초
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>자바스크립트 jQuerty 기초 연습</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script> <!--jQuery 설정-->
<!--부트스트랩에는 이미 J쿼리가 추가되어 있어서 따로 추가할 필요는 없음-->
<style>
div {
margin : 20px;
}
</style>
<script>
function test1() {
$('#input1').val('1번값테스트'); // id=input1 인곳의 값을 ''안의 내용으로 넣는다
}
function test2() {
alert($('#input1').val()); // id=input1 인곳의 값을 가져온다
}
function test3() {
$('#input1').hide(); // 숨기기
}
function test4() {
$('#input1').show(); // 보이게하기
}
function test5() {
$('#div1').append(temp_html); // id에 지정된 곳 바로 다음에 HTML상태로 추가하기
}
let name = '추가' // 내용을 변수로 지정가능 불러올땐 => ${변수명}
let temp_html = `
<div>
<button>${name}</button>
</div>
` // ``시작 끝 2번 붙여야함 (작은따옴표가 아닌 물결표아래의 `임)
function test5_2() {
$('#div1').empty() // 내부 태그를 모두 비운다
}
function test6() {
if ($('#input2').val() == "") {
alert('입력하세요');
}
else {
alert($('#input2').val());
}
}
function test7() {
if ($('#input3').val().includes('@')) { // 변수나 값뒤에 .includes('문자열')을 붙이면 포함여부확인 초함시 True값 반환
alert($('#input3').val().split('@')[1] + '메일을 사용중입니다') // .split('문자열')로 문자 앞뒤를 나눠 배열변수로 넣음
}
else {
alert('메일형식으로 쓰시오');
}
}
</script>
</head>
<body>
<div>
<input id="input1"> <!--j쿼리에서는 class대신 id로 연결한다-->
<button onclick="test1()">1.값넣기</button>
<button onclick="test2()">2.값불러오기</button>
</div>
<div>
<button onclick="test3()">3.숨기기</button>
<button onclick="test4()">4.보이게하기</button>
</div>
<div>
<button onclick="test5()">5.HTML추가하기</button>
<button onclick="test5_2()">5_2.HTML지우기</button>
</div>
<div id="div1"></div>
<div>
<input type="text" id="input2">
<button onclick="test6()">6.입력한지체크</button>
</div>
<div>
<input type="text" id="input3">
<button onclick="test7()">7.메일형식체크</button>
</div>
</body>
</html>
기존 부트스크랩의 자바스크립트에 J쿼리 적용하기
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
crossorigin="anonymous"></script>
<title>스파르타코딩클럽 | 부트스트랩 연습하기</title>
<link href="https://fonts.googleapis.com/css2?family=Gowun+Dodum&display=swap" rel="stylesheet">
<style>
* {
font-family: 'Gowun Dodum', sans-serif;
}
.mytitle {
width: 100%;
height: 250px;
background-color: red;
background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.3)), url("https://movie-phinf.pstatic.net/20210715_95/1626338192428gTnJl_JPEG/movie_image.jpg");
background-size: cover;
background-position: center;
color: white;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.mytitle > button {
width: 200px;
height: 50px;
background-color: transparent;
color: white;
border-radius: 50px;
border: 1px solid white;
margin-top: 10px;
}
.mytitle > button:hover {
border: 2px solid white;
}
.mycomment {
color: grey;
}
.wrap {
max-width: 1200px;
width: 95%;
margin: 20px auto 0;
}
.mypost {
max-width: 500px;
width: 95%;
margin: 20px auto 0px auto;
box-shadow: 0px 0px 3px 0px gray;
padding: 20px;
display: none; /*표시 안되게하기 (처음 페이지열릴때부터)*/
}
.mybutton {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
margin: 20px 0px 0px 0px;
}
.mybutton > button {
margin-right: 10px;
}
</style>
<script>
function open_box() {
$('#post-box').show() // (j쿼리) 보이게하기
}
function close_box() {
$('#post-box').hide() // (j쿼리) 숨기기
}
</script>
</head>
<body>
<div class="mytitle">
<h1>내 생애 최고의 영화들</h1>
<button onclick="open_box()">영화 기록하기</button> <!--클릭하면 open_box 함수호출-->
</div>
<div class="mypost" id="post-box"> <!--j쿼리에서 지정한 post-box를 id= 에 지정-->
<div class="form-floating mb-3">
<input type="email" class="form-control" id="floatingInput" placeholder="name@example.com">
<label for="floatingInput">영화URL</label>
</div>
<div class="input-group mb-3">
<label class="input-group-text" for="inputGroupSelect01">별점</label>
<select class="form-select" id="inputGroupSelect01">
<option selected>선택하기</option>
<option value="1">⭐</option>
<option value="2">⭐⭐</option>
<option value="3">⭐⭐⭐</option>
</select>
</div>
<div class="form-floating">
<textarea class="form-control" placeholder="Leave a comment here" id="floatingTextarea"></textarea>
<label for="floatingTextarea">코멘트</label>
</div>
<div class="mybutton">
<button type="button" class="btn btn-dark">기록하기</button>
<button type="button" class="btn btn-outline-dark" onclick="close_box()">닫기</button> <!--클릭하면 close_box 함수호출-->
</div>
</div>
<div class="wrap">
<div class="row row-cols-1 row-cols-md-4 g-4">
<div class="col">
<div class="card">
<img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">여기에 제목이 들어갑니다</h5>
<p class="card-text">여기에 내용이 들어가지요</p>
<p>⭐⭐⭐</p>
<p class="mycomment">여기에 코멘트 들어갑니다.</p>
</div>
</div>
</div>
<div class="col">
<div class="card">
<img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">여기에 제목이 들어갑니다</h5>
<p class="card-text">여기에 내용이 들어가지요</p>
<p>⭐⭐⭐</p>
<p class="mycomment">여기에 코멘트 들어갑니다.</p>
</div>
</div>
</div>
<div class="col">
<div class="card">
<img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">여기에 제목이 들어갑니다</h5>
<p class="card-text">여기에 내용이 들어가지요</p>
<p>⭐⭐⭐</p>
<p class="mycomment">여기에 코멘트 들어갑니다.</p>
</div>
</div>
</div>
<div class="col">
<div class="card">
<img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">여기에 제목이 들어갑니다</h5>
<p class="card-text">여기에 내용이 들어가지요</p>
<p>⭐⭐⭐</p>
<p class="mycomment">여기에 코멘트 들어갑니다.</p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
Ajax 기초 정리
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ajax기초연습</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script> <!--jQuery 설정-->
<script>
function test1() {
$('#ul1').empty(); //업데이트형식이니 기존것은 지우고 다시 채워넣기
$.ajax({ // ajax 기본문법
type: "GET", // GET방식으로 요청
// 값(API 등) 불러올때 GET은 조회, POST는 생성/변경/삭제 용도
url: "http://spartacodingclub.shop/sparta_api/seoulair", // 서울시 미세먼지 API
data: {}, // 요청하면서 동시에 보낼 데이터 (GET 요청시엔 비워둠)
success: function (response) { // 서버에서 받은 결과를 response라는 변수에 넣고 아래내용으로 바로실행 (함수명은 안적음)
let mise_list = response["RealtimeCityAir"]["row"]; // API값 > RealtimeCityAir열항목 > row열항목의 값만
// ★ 위의 경우 배열값이 아니기 떼문에 이렇게 처리!
for (let i = 0; i < mise_list.length; i++) {
let mise = mise_list[i];
// ★ 아래의 항목의 경우 배열값이기 떼문에 for문으로 위같이 처리필요! (아래에 [i]넣어서 위 없애고 바로 집어넣어도됨)
let gu_name = mise["MSRSTE_NM"]; // 위의 row열항목내에 많은 배열값이 있는데 이중 MSRSTE_NM 열항목이 ~구이름임
let gu_mise = mise["IDEX_MVL"]; // > row열항목 > IDEX_MVL열항목 (미세먼지값임)
// ★ 배열값을 웹상에 표현하는 방법 : .append(temp_html) 와 리스트태그(<ul><li>) 또는 표태그 이용
let temp_html = '' // 미리 변수를 만들어둠 (안해도됨??)
if (gu_mise > 40) { //값에 따라서 다른 HTML적용
temp_html = `<li class="bad">${gu_name} : ${gu_mise}</li>` //j쿼리로 변수 불러올땐 => ${변수명}
// ★ 아무것도 없을때만 let을 붙이고 if문안에선 let을 안붙여도됨
} else {
temp_html = `<li>${gu_name} : ${gu_mise}</li>`
}
$('#ul1').append(temp_html) //j쿼리로 위치(id)지정 할땐 => $(#id)
}
}
})
}
function test2() {
$('#tbody1').empty();
$.ajax({
type: "GET",
url: "http://spartacodingclub.shop/sparta_api/seoulbike", //따릉이 API
data: {},
success: function (response) {
let rows = response["getStationList"]["row"]; //API주소 인터넷에 쳐서 json뷰어로 항목명 확인가능
for (let i = 0; i < rows.length; i++) {
let name = rows[i]["stationName"]; //이번엔 바로 [i]넣어서 처리
let rack = rows[i]["rackTotCnt"];
let bike = rows[i]["parkingBikeTotCnt"];
let temp_html = ''
if (bike > 6) {
temp_html = `
<tr>
<td>${name}</td>
<td>${rack}</td>
<td>${bike}</td>
</tr>
`
} else {
temp_html = `
<tr class="bad">
<td>${name}</td>
<td>${rack}</td>
<td>${bike}</td>
</tr>
`
}
$('#tbody1').append(temp_html)
}
}
})
}
function test3() {
$.ajax({
type: "GET",
url: "http://spartacodingclub.shop/sparta_api/rtan", //새로고침할때마다 르탄이 바뀌는 API
data: {},
success: function (response) {
let img_url = response['url']
let text_msg = response['msg']
$("#img-rtan").attr("src", img_url); //이미지를 바꾸는 방법
$("#text-rtan").text(text_msg); //텍스트를 바꾸는 방법
}
})
}
$(document).ready(function (){ //페이지 열면 자동 실행하는 Ajax 문법
$.ajax({
type: "GET",
url: "http://spartacodingclub.shop/sparta_api/weather/seoul", //서울기온 API
data: {},
success: function (response) {
$("#seoul_temp").text(response['temp']); //간단한 단순값은 바로 지정
}
})
});
</script>
<style>
.bad {
color: red;
}
table {
border: 1px solid;
border-collapse: collapse; /*테이블 테두리 병합 (즉 1줄로 테두리화)*/
margin: 10px 0 20px 0;
}
td {
border: 1px solid;
padding: 3px;
}
</style>
</head>
<body>
<div>
<button onclick="test1()">현재 서울미세먼지값 업데이트</button>
<ul id="ul1">
</ul>
</div>
<div>
<button onclick="test2()">현재 따릉이현황 보기</button>
<table>
<thead> <!--테이블 머리글-->
<tr>
<td>거치대 위치</td>
<td>거치대 수</td>
<td>거치된 따릉이 수</td>
</tr>
</thead> <!--테이블 내용부분-->
<tbody id="tbody1">
</tbody>
</table>
</div>
<div>
<button onclick="test3()">르탄이 나와</button>
<div>
<img id="img-rtan" width="300" src="http://spartacodingclub.shop/static/images/rtans/SpartaIcon11.png"/>
<h3 id="text-rtan">나는 ㅇㅇㅇ하는 르탄이!</h3>
</div>
</div>
<div>
<p>서울의 현재 기온은 <span id="seoul_temp"></span>도 입니다.</p>
</div>
</body>
</html>
'개발일지' 카테고리의 다른 글
웹프로그래밍 - 파이썬 API다루기, 크롤링, DB처리 3주차 정리 (0) | 2022.12.19 |
---|---|
파이썬 데이터분석 3주차 정리 (OpenDart의 API다루기) (0) | 2022.12.18 |
웹프로그래밍 - HTML/CSS/자바스크립트 기초 1주차 정리 (0) | 2022.12.15 |
파이썬 데이터분석 2주차 정리 (0) | 2022.12.14 |
파이썬 기초 1주차 정리 (0) | 2022.12.13 |