코딩 공부/JAVASCRIPT

자바스크립트 마무리 문제

천서리 2023. 4. 15. 17:57
QUOTE THE DAY

“ 당신이 6개월 이상 한 번도 보지 않은 코드는 다른 사람이 다시 만드는 게 훨씬 더 나을 수 있다. ”

- 이글슨 (Eagleson)
반응형

10초에 한번씩 명언이 바뀌는 페이지 만들기

 

 

 


마무리 문제1

JSON 데이터를 가져온 후 코솔창에 결과를 표시해보세요. 가져온 데이터가 어떤 구조로 이루어져 있는지 살펴보는 것이 목표입니다

 

길라잡이

  • fetch와 then, catch를 사용해서 URL에서 자료를 가져옵니다.
  • 가져온 데이터에 어떤 값이 어떤 구조로 저장되어 있는지 확인하고 그중에서 명언과 말한 사람 정보를 가져오는 방법을 생각합니다.

 

 

마무리 문제2

마무리 문제1에서 명언 데이터를 가져오는데 성공했으면 그중에서 1개의 명언만 가져와서 문서의 #result 역영에 명언 내용과 말한 사람을 표시해 보세요. 이때 명언 내용은 #result 영역에 있는 .quote 영역에, 말한 사람은 .author 영역에 표시하세요.

 

 

길라잡이

  • 마무리 문제1에서 한 번에 몇 개의 명언을 가져오는지 확인했으면 1과 그 숫자 사이의 값을 무작위로 추출합니다.
  • 무작위 수를 사용해서 명언을 가져온 후 명언 부분과 말한 사라 이름을 나눠서 화면 영역에 표시합니다.

 

 


 코드

<!DOCTYPE html>
<html lang="ko">
<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>명언 모음</title>

    <link rel="stylesheet" href="css/reset.css">
    <link rel="stylesheet" href="css/c.css">
    <style>
        body {
            background-image: url(img/3.jpg);
            width: 100%;
            height: 100vh;
            overflow: hidden;
            background-position: center;
            background-size: cover;
            text-align: center;
            display: flex;
            flex-direction: column;
            justify-content: center;
            font-size: 30px;
            color: black;
        }
    </style>
</head>

<body class="bg01 font11">
    <div id="result">
        <div class="quote"></div> 
        <div class="author"></div>
    </div>

    <script>
        //함수 정의
        function updateQuote() {
            fetch("json/dummy01.json")
            .then(res => res.json())
            .then(data => {
                const result = document.querySelector("#result");
                const random = Math.floor(Math.random() * 30);
                result.querySelector(".quote").innerHTML = data.quotes[random].quote;
                result.querySelector(".author").innerHTML = ` - ${data.quotes[random].author}`;
            })
            .catch(error => console.log(error));
        }

        // 10초마다 함수 실행
        updateQuote();
        setInterval(updateQuote, 10000);

    </script>
</body>
</html>

 

updateQuote 함수를 정의하여, 이 함수 내부에서 fetch API를 사용하여 명언 데이터를 가져옵니다. 그리고 가져온 데이터에서 랜덤으로 명언 하나를 선택하여 HTML의 #result 요소에 출력합니다.

 

그 다음, updateQuote 함수를 호출하여 명언을 불러오고, setInterval 함수를 사용하여 10초마다 updateQuote 함수를 실행시키도록 설정합니다. 이렇게 하면 매 10초마다 새로운 명언이 자동으로 업데이트되어 출력됩니다.

 


 

 

반응형
Adventure Time - BMO