미소를뿌리는감자의 코딩

[항해99 웹개발종합반] 2주차 HW 본문

강의수강/HW

[항해99 웹개발종합반] 2주차 HW

미뿌감 2024. 1. 9. 14:58
728x90

2주차 HW은 

nav 부분에서 API을 이용해서 온도와 아이콘을 추가하는 것이다.

 

[접근 방법]

우선 API를 살펴보았다.

구성

요런식으로 심플하게 구성되어 있었다.

 

여기서 유의해야할 점은 temp 였다. 

29.0도로 나타내야 하기 때문에, 

 

소수 첫 번째 자리까지 나타내 주어야 한다.

 

icon의 경우 비교적 edit 할 것이 적었다.

 

[적용]

날씨가 0도인 것을 생각 못하고 100을 곱했었다..ㅎ 29도인줄 알았지만 0.29도 였던걸로...

우선 temp와 icon을 받아왔으며, 

 

temp의 경우, 

 currentTemp = currentTemp.toFixed(1);
 currentTemp = currentTemp + "°C"

currentTemp를 modify해주었다.

 

.toFixed(1) 

을 이용해서 소수 첫 번째 자리까지 나타내 주었다.

마지막으로, °C를 더해주었다.

 

 

icon의 경우, 

 $('#icon').attr("src", currentIcon)

이런식으로 작성하였다. 

처음에는 

$('#icon').src(currentIcon) 

으로 작성하였으나, src에 해당하는 function이 없다며, error가 발생했다.

 

지피티의 도움을 받아, attr를 이용하면, src의 값을 바꿀 수 있다는 것을 알게되어, 위와 같이 작성하게 되었다.

 

실제 위의 JS코드에 적용시켜주기 위해서, 적용하고자 하는 곳에 id를 작성해 주었다.

id를 추가추가

 

이후 jQuery를 이용하여, 실제 적용시켜주었다.

 

[결과]

깔쌈하게 적용 완!

깔꼼하게 날씨와 이모티콘이 잘 적용된 것을 확인할 수 있다.

 

[전체 코드]

더보기
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
background-position: center;
background-size: cover;
color: white;
}

.navbar {
display: flex;
justify-content: space-between;
align-items: center;
}

.weather {
display: flex;
align-items: center;
margin-right: 30px;
}

.container {
display: flex;
flex-direction: column;
/* Flex 안의 아이템들을 세로 방향으로 배치합니다. */
justify-content: center;
/* 주축 방향으로 가운데 정렬합니다. */
align-items: center;
/* 교차축 방향으로 가운데 정렬합니다. */
height: 100vh;
text-align: center;
}

.footer {
position: fixed;
left: 0;
bottom: 0;
width: 100%;
text-align: center;
font-weight: bold;
padding: 20px 0;
}

.greeting {
margin-bottom: 50px;
}

.motto {
margin-bottom: 100px;
}

.logo {
height: 32px;
margin-left: 30px;
}
</style>
</head>

<body>

<nav class="navbar">
<img class="logo"
alt="" />
<div class="weather">
<p id="temp">날씨 맑음, 20ºC</p>
</div>
</nav>

<div class="container">
<div class="greeting">
<h1>Hello, 미뿌감!</h1>
<h1 id="currentTime">12:30</h1>
</div>

<div class="motto">
<h3>My life's motto</h3>
<h2>웃으면 행복해집니다.</h2>
</div>
</div>

<div class="footer">
<p id="quoteAuthor">- 작자 미상 -</p>
<p id="quoteContent">멋진 명언입니다. 아이스크림을 먹으면 행복해져요.</p>
</div>

<script>
function showCurrentTime() {
var now = new Date();
var hours = now.getHours();
var minutes = now.getMinutes();
var seconds = now.getSeconds();
hours = hours < 10 ? '0' + hours : hours;
minutes = minutes < 10 ? '0' + minutes : minutes;
seconds = seconds < 10 ? '0' + seconds : seconds;
var timeString = hours + ':' + minutes + ':' + seconds;

// ID를 사용하여 요소를 찾고 시간을 설정
document.getElementById("currentTime").textContent = timeString;
}

// 1초마다 함수를 실행하여 시간을 업데이트
setInterval(showCurrentTime, 1000);

fetch(url).then(res => res.json()).then(data => {
console.log(data);
let author = data['author']
let content = data['content']

let authorMsg = `- ${author} -`
let contentMsg = `"${content}"`

$('#quoteAuthor').text(authorMsg)
$('#quoteContent').text(contentMsg)

})

fetch(weather_url)
.then(res => res.json())
.then(data => {
console.log(data);
let currentTemp = data['temp']
let currentIcon = data['icon']
//currentTemp = currentTemp * 100
currentTemp = currentTemp.toFixed(1);
currentTemp = currentTemp + "°C"

$('#icon').attr("src", currentIcon)
$('#temp').text(currentTemp)
})
</script>
</body>

</html>

 

[후기]

이전에 수업을 들을 때, JSON 부분은 상대적으로 깊게 다루지 못했었는데,

이번 기회를 통해 JSON 부분에 대해서 더 알게 되어서 좋았다.

더불어서 jQuery 부분이 흥미로웠다. 새롭게 알게된 재밌는 부분이었다.

 

오늘 약속이 있어서 시간 안에 끝낼 수 있을가 조금 고민이었는데, 끝내어서 다행이다. 

자는 도중 재난문자를 받았는데,,, 이 때문인지 알람이 울리지 않아서 

약속시간인 10시 보다 20분 늦은.. 10시 20분에 게더타운에 입장했다..ㅠㅠ......알람 이뇨석..ㅠ

728x90