기초부터 시작하는 코딩/Javascript

Javascript를 공부해 봅시다! - 번외편. 예제를 풀어봅시다.4

kebab00 2023. 4. 15. 22:07

728x90

- 자 오늘은 예제입니당

- 이번에도 모던 자바스크립트 책에 있는 예제를 가져왔는데요 

- 이번엔 조금 변형을 해서 명언이 적힌 문구가 10초에 한번 씩 변하는 스크립트를 만들어 보았습니다.

- 10초가 생각보다 긴 것 같습니다 ㅋㅋㅋ

- 각설하고 사실 html과 css는 크게 볼게 없습니다.

- 네모난 박스만 만들면 되기 때문이죠

- 보기만 하시죠

- html입니다. css와 javascript는 외부파일로 불러왔습니다.

<!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">
    <link rel="stylesheet" href="../homeworkcss/2023.04.15.css">
    <title>Document</title>
</head>
<body>
    <div class="wrap">
        <div class="ddd">
            <p class="p"></p>
            <p class="q"></p>
        </div>
    </div>
</body>
<script hefer src="../homeworkJs/2023.04.15.js"></script>
</html>
* {
    margin: 0;
    padding: 0;
}
.wrap {
    display: flex;
    justify-content: center;
    margin-top: 10%;
}
.ddd {
    margin: 0, auto;
    width: 1000px;
    border: 3px solid #000;
    text-align: center;
    background-color: #a6dec3;
}
.p {
    display: inline-block;
    font-size: 40px;
    padding: 70px 50px 30px;
    line-height: 1.5;
}
.q {
    text-align: right;
    margin-right: 15%;
    font-size: 25px;
    margin-bottom: 50px;
}

- 이제 자바스크립트를 보시죵

let aa = 0
const dataQuestion = () => {
    const random = Math.floor( Math.random()*30)
    aa = random 
    fetch("../homeworkJson/dummy01.json")
    .then(res => res.json())
    .then(items => {
        document.querySelector(".ddd .p").innerHTML=items.quotes[aa].quote
        document.querySelector(".ddd .q").innerHTML=items.quotes[aa].author
    });
};
dataQuestion()
setInterval(dataQuestion,10000)

- 일단 명언이 30가지 들어있는 json파일을 fetch와.then을 사용해서 불러왔습니다.

- 그리고 document.querySelector를 사용해서 요소를 선택해 준 다음 innerHTML를 사용해서 json파일에 있는 배열을 넣어주었습니다.

- 그리고 0-29까지의 수를 랜덤으로 하나 만들어 aa 라는 변수에 저장을 시켜주었습니다.

- 그리고 setInterval로 10초마다 한번씩 실행을 시켜주었는데 그앞에 실행문이 왜 또 있느냐 하면 setInterval만 있다면 화면을 켠 직후 10초 동안 문구가 없는 화면이기 때문입니다..

- 아무튼 이렇게 하면 끝!!