본문 바로가기
개발일지

frontend -3-

by 태운콩즙 2024. 1. 11.
728x90
반응형

자바스크립트에서는 배열이 자동으로 늘어날수 있다

자바에서는 arraylist 를 선언을 해주게 되면 입력한 값이 배열로 들어가서 늘어났지만

자바스크립트는 조금 다르다

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 자바 스크립트 객체
    const book = {
        name: "자바 스크립트 기초",
        publisher:"좋은 출판사",
        author:"작가1",
        price:20000,
        index:{
            ch1: "소개",
            ch2: "변수",
            ch3: "연산자"
        },
        date: "2024년 1월"
    }
    const book1 = {
        name: "자바 스크립트 기초",
        publisher:"좋은 출판사",
        author:"작가2",
        price:20000,
        index:{
            ch1: "소개",
            ch2: "변수",
            ch3: "연산자"
        },
        date: "2024년 1월"
    }
    const book2 = {
        name: "자바 응용",
        publisher:"좋은 출판사",
        author:"작가3",
        price:50000,
        index:{
            ch1: "소개",
            ch2: "변수",
            ch3: "연산자"
        },
        date:"2024년 1월"


    }
    const arr = [book , book1 ,book2];
    console.log(arr);
    for(let i = 0; i < arr.length; i++){
        console.log(arr[i]);
        console.log(arr[i].name);
        console.log(arr[i].index.ch1);
    }
    console.log(book);
    // 출판사 정보만 출력
    console.log(book.publisher);
    //ch2 의 value 출력
    console.log(book.index.ch2);
</script>
</html>

 

클릭이벤트와 함수

 

우리가 평소에 보는 인터넷 화면에서 클릭을 하는 이벤트를 주는 명령어(onclick)와 버튼을 만들어주는 명령어(button)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h2>javascript 함수</h2>
    <!-- onclick이라고 작성한 요소에 클릭 이벤트가 발생
         했을 때 호출 할 함수 -->
    <button onclick="fun1()">fun1 함수 호출</button>
    <button onclick="fun2()">fun2 함수 호출</button>
    <button onclick="fun3()">alert 함수 호출</button>
</body>
<script>
    // fun1();
    function fun1() {
        console.log("fun1 함수 호출");
    }
    const fun2 = () => {
        console.log("fun2 함수 호출");
    }
    const fun3 = () => {
        let var1 = "alert 입니다";
        // alert("alert 입니다");
        alert(var1);
    }
    const fun4 = () => {
        let result = confirm("선택해주세요");
        console.log(result);
        if(result){
            console.log("확인 클릭");
        }else{
            console.log("취소 클릭");
        }
    }
    const fun5 = () => {
        let value = prompt("입력해보세요")
        console.log(value);
    }
</script>
</html>

 

이제 값을 입력하는 명령어인 input 과 버튼을 만들어주는 명령어(button) 클릭이벤트를 만들어주는 명령어(onclick)을 사용해보자

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            width: 100px;
            height: 100px;
        }
        #div1{
            background-color: orange;
        }
        #div2{
            background-color: dodgerblue;
        }
    </style>
</head>
<body>
    <h2>javascript events</h2>
    <button onclick="fun1">fun1 함수</button>
    <button onclick="fun2('hello')">fun2 함수</button>
    <button onclick="fun3(this)">fun3 함수</button>

    <div id="div1" onmouseover="fun4()" onmouseout="fun5()"></div>
    <div id="div2" onmousedown="fun6()" onmouseup="fun7()"></div>

    <input type="text" onkeydown="fun8()" placeholder="입력하시죠">
    <input type="text" onkeydown="fun9()" placeholder="입력하시죠">
    <input type="text" onblur="fun10()" placeholder="입력하시죠">

</body>
<script>
    const fun1 = () =>{
        console.log("fun1함수");
    }
    const fun2 = (param1) => {
        console.log(param1);
    }
    const fun3 = (ele1) =>{
        console.log(ele1);
    }
    const fun4 = () => {
        console.log("들어왔다");
    }
    const fun5 = () => {
        console.log("나갔다");
    }
    const fun6 = () => {
        console.log("눌렀다");
    }
    const fun7 = () => {
        console.log("뗐다");
    }
    const fun8 = () => {
        console.log("키보드를 눌렀다");
    }
    const fun9 = () => {
        console.log("키보드에서 손을 뗐다");
    }
    const fun10 = () =>{
        console.log("절 떠나셨나요");
    }
    
</script>
</html>

 

  1. DOM(Document Obeject Model, 문서 객체 모델)
    1. html(문서)에 표현된 여러 요소들을 계층적으로 표현하고 각 요소의 속성이나 값을 javascript도 제어하기 위해 제공되는 여러 함수
    2. DOM 함수를 이용하여 javascript 에서 처리한 결과를 화면에 보여줄 수도 있고 화면에 보이는 데이터를 javascript함수로 가져올 수도 있음
    3. DOM api 라고 하며 document.으로 시작함

기초

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h2>안녕하세요</h2>
    <h2>반갑습니다</h2>
    <h2>javascript</h2>
    <h3>오늘은 목요일</h3>
    <h3>hello</h3>
    <h3>html ,css ,javascript ,재밌다</h3>
    <h4></h4>
</body>
<script>
    console.log(document);
    // 현재 문서에 있는 모든 h2 요소
    console.log(document.getElementsByTagName("h2"));
    const h2All = document.getElementsByTagName("h2");
    console.log(h2All);
    console.log(h2All.length);
    console.log(h2All[0]);
    console.log(h2All[0].innerText);
    // 반복문으로 h2 태그의 innerText 출력
    for(let i = 0; i<h2All.length; i++){
        console.log(h2All[i].innerText);
    }

    //querySelector(css 선택자 문법)
    console.log(document.querySelector("h2"));
    console.log(document.querySelectorAll("h2"));
    const h2All2 = document.querySelectorAll("h2");
    for(let i = 0; i < h2All2.length; i++){
        console.log(h2All2[i].innerText);
    }

    console.log(document.querySelectorAll("h3"));

    //h4 태그에 내용 추가 하기
    // h4 태그 가져오기
    const h4 = document.querySelector("h4");
    // h4에 innerText 값 주기
    // h4.innerText = "이 값이 보일까?"
    document.querySelector("h4").innerText = "ㅎㅎㅎㅎ";
</script>
</html>

 

<특정 id와 class 가 적용된 요소 가져오기>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- id1이 적용된 h2 태그 -->
    <h2 id="id1">html</h2>
    <h2 id="id2">css</h2>
    <h2 id="id3">javascript</h2>

    <h2 class="class1">frontend</h2>
    <h2 class="class2">backend</h2>
</body>
<script>
    console.log(document.getElementsByTagName("h2"));
    console.log(document.querySelectorAll("h2"));

    // 특정 id 가 적용된 요소 가져오기
    const ele1 = document.getElementById("id1");
    const ele2 = document.querySelector("#id1");

    // 특정 class 가 적용된 요소 가져오기
    const ele3 = document.getElementsByClassName("class1");
    const ele4 = document.querySelectorAll(".class1")
</script>
</html>

 

버튼을 클릭하면 스크립트에서 입력한 값이 나오게 하기

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="id1">
        <p>
            안녕하세요
        </p>
    </div>
    <div id="id2">

    </div>
    <div>
        <button onclick="fun1()">fun1 함수</button>
    </div>
</body>
<script>
    const id1 = document.getElementById("id1");
    console.log(id1.innerText);
    console.log(id1.innerHTML);

    const fun1 = () => {
        let output = "<h2>이게 보일까?</h2>";
        // id2.innerHTML = output;
        document.getElementById("id2").innerHTML = output;
        // id.innerText=output;
    }
</script>
</html>

 

이미지 교체 버튼을 누르면 이미지 교체

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <img src="../images/고양이.jpg" width="100" height="100" id="img1" alt="">
    <button onclick="changeImg()">이미지 교체</button>
</body>
<script>
    const changeImg = () => {
        const img = document.getElementById("img1");
        // img 태그의 src 속성값 확인
        console.log(img.src);
        img.src = "../images/다운로드.png";
    }
</script>
</html>

 

css 제어

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h2 onclick="fun1()" id="id1">오늘은 목요일</h2>
</body>
<script>
    const fun1 = () => {
        const ele = document.getElementById("id1");
        // css 제어
        ele.style.color = "yellow";
        ele.style.backgroundColor = "black";
    }
</script>
</html>

 

기초 응용1

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    입력1: <input type="text" id="id1" name="id1" onkeyup="fun1()"> <br>
    입력2: <input type="text" id="id2" name="id2" onblur="fun2()"> <br>
    <!--입력 2에 값을 입력하고 아래 버튼을 클릭 했을때 id= result로 지정한 p 태그에 입력한 값을 출력해보기 -->
    <button onclick="fun3()">fun3함수</button>
    입력값: <p id="result"></p>
</body>
<script>
    const fun1 = () => {
       const input1 = document.getElementById("id1");
       console.log(input1.value);
       const input2 = document.querySelector('input[name="id1"]');
       console.log(input2.value);
       const inputValue = document.getElementById("id1").value;
       console.log(inputValue);
    }
    const fun2 = () => {
        const input1 = document.getElementById("id2");
        console.log(input1.value);
    }
    const fun3 = () => {
        const value = document.getElementById("id2").value;
        const p = document.getElementById("result");
        p.innerText = value;
    }
</script>
</html>

 

덧셈 계산기

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    number1: <input type="text" id="num1"> <br>
    number2: <input type="text" id="num2"> <br>
    <button onclick="cal()">계산</button> <br>
    계산결과: <input type="text" id="result">
</body>
<script>
    const cal = () => {
        const num1 = document.getElementById("num1").value;
        const num2 = document.getElementById("num2").value;
        console.log(typeof num1);
        console.log(typeof parseInt(num1));
        const sum = parseInt(num1)  + parseInt(num2);
        console.log(sum);
        const result = document.getElementById("result");
        result.value = sum;
    }
</script>
</html>

 

학점 계산기

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 두 점수의 평균이 90이상 A, 80이상 B 70이상 C 나머지는 F -->
    java 점수: <input type="text" id="java"> <br>
    html 점수: <input type="text" id="html"> <br>
    학점: <input type="text" id="grade">
    <!-- 아래 h2에는 당신의 학점은 OO입니다. 로 출력 -->
    <h2 id="grade1"></h2>
    <button onclick="gradeCal()">학점계산</button>
</body>
<script>
    const gradeCal = () => {
        const java = document.getElementById("java").value;
        console.log(java.length);
        const html = document.getElementById("html").value;
        const avg = (parseInt(java) + parseInt(html)) / 2;
        let grade = "";
        if (avg >= 90) {
            grade = "A";
        } else if (avg >= 80) {
            grade = "B";
        } else if (avg >= 70) {
            grade = "C";
        } else {
            grade = "D";
        }
        const result = document.getElementById("grade");
        result.value = grade;
        document.getElementById("grade1").innerHTML =
            "당신의 학점은 " + grade + "입니다";
    }
</script>

</html>

 

회원가입창

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h2>회원가입</h2>
    email: <input type="text" id="email" name="email" onblur="email_check()" placeholder="이메일을 입력하세요"> <br>
    <span id="email-check"></span> <br>
    password: <input type="text" id="password" name="password" onblur="pass_check()" placeholder="비밀번호를 입력하세요"> <br>
    <span id="password-check"></span> <br>
    password 확인: <input type="text" id="password-re" name="passwordRe" onblur="pass_equal_check()" placeholder="비밀번호를 입력하세요"> <br>
    <span id="password-equal-check"></span> <br>
</body>
<script>
    const email_check = () => {
        const email = document.getElementById("email").value;
        const emailCheck = document.getElementById("email-check");
        console.log(email.length);
        /*
            글자수가 5~10 글자가 안되면 5~10글자로 입력해달라고 빨간색 출력
            5~10글자로 작성하면 좋아요 녹색 출력 
        */
        if (email.length == 0) {
            // alert("필수입력입니다!");
            emailCheck.innerHTML = "필수입력입니다!!";
            emailCheck.style.color = "red";
        } else if (email.length < 5 || email.length > 10) {
            emailCheck.innerHTML = "5~10자로 입력해주세요!!";
            emailCheck.style.color = "red";
        } else if (email.length >= 5 && email.length <= 10) {
            emailCheck.innerHTML = "좋아요";
            emailCheck.style.color = "green";
        }
    }

    const pass_equal_check = () => {
        const pass = document.getElementById("password").value;
        const passRe = document.getElementById("password-re").value;
        const result = document.getElementById("password-equal-check");
        if(pass == passRe) {
            result.innerHTML = "일치합니다!";
            result.style.color = "green";
        } else {
            result.innerHTML = "일치하지 않습니다!";
            result.style.color = "red";
        }
    }
</script>

</html>
728x90
반응형

'개발일지' 카테고리의 다른 글

SpringLegacy -2-  (1) 2024.02.05
SpringLegacy(MVC)  (0) 2024.02.02
frontend 2일차  (1) 2024.01.10
db 마무리 ,Frontend 시작  (1) 2024.01.09
개발일지 -db 응용-  (2) 2024.01.08