본문 바로가기

기록/자바_국비

[배운내용정리] 0122 자바 국비교육_ Javascript

728x90

2021년 01월 22일 9시 ~ 15시 30분 zoom으로 수업 진행

 


 

location

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
        function test() {
            //location.href = "http://www.google.com";

            //location.replace("http://www.google.com");
            //전 페이지에 대한 기록 x
            //현재 보고있느 페이지를 해당 url페이지로 아예 바꿔버린다고 생각

            location.reload();//새로고침
        }
    </script>
</head>
<body>
    <a href="http://google.com">구글로 이동</a>
    <button onclick="test();">이동</button>
    
</body>
</html>

 


 

자바스크립트로 체크박스 다루기

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>checkbox</title>

    <style type="text/css">
        #colorbox{
            width: 320px;
            height: 320px;
            position: relative;
        }
        #red,#yellow,#blue,#black {
            width: 150px;
            height: 150px;
            border: 1px solid black;
            position: absolute;
        }
        
        #yellow{left:160px;}
        #blue{top:160px;}
        #black{left:160px; top:160px;}
    
    </style>
    
    <script type="text/javascript">
    
        function allsel(check){
            var chks = document.getElementsByName("chk");
            for(var i=0; i<chks.length; i++) {
                chks[i].checked = check;
            }
        }
    
        function sel() {
            var chks = document.getElementsByName("chk");
            if(chkChecked(chks)>0) { //하나 이상 체크 되었을때
                for(var i=0; i<chks.length; i++) {
                    if(chks[i].checked) {
                        document.getElementById(chks[i].value).style.backgroundColor=chks[i].value;
                    } else {
                        document.getElementById(chks[i].value).style.backgroundColor="white";
                    }
                }
            } else {
                clearDiv();
            }
    
        }
    
        function chkChecked(chks) {
            var cnt = 0;
            for(var i=0; i<chks.length; i++) {
                if(chks[i].checked) {
                    cnt++;
                }
            }
            return cnt;
        }
    
        function clearDiv() {
            allsel(false);
            document.getElementsByName("all")[0].checked=false;
    
            var colorboxs = document.querySelectorAll("#colorbox > div");
            for(var i=0; i<colorboxs.length; i++) {
                colorboxs[i].style.backgroundColor="white";
            }
        }
    
    </script>

</head>
<body>
    <div id="colorbox">
        <div id="red">red</div>
        <div id="yellow">yellow</div>
        <div id="blue">blue</div>
        <div id="black">black</div>
    </div>
    <div id="base">
            <input type="checkbox" name="all" onclick="allsel(this.checked);">전체선택<br>
            <input type="checkbox" name="chk" value="red">빨강<br>
            <input type="checkbox" name="chk" value="yellow">노랑<br>
            <input type="checkbox" name="chk" value="blue">파랑<br> 
            <input type="checkbox" name="chk" value="black">검정<br> 

            <input type="button" value="선택" onclick="sel();">
            <input type="button" value="초기화" onclick="clearDiv();">

    </div>




</body>
</html>

 


 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>select</title>

    <script type="text/javascript">
       function show() {
            var food = document.getElementsByName("food")[0];//select 태그가 들어올거임

            //selectedIndex = select 태그에서 현재 선택이 되어있는 option 태그의 인덱스 값을 반환
            var idx = food.selectedIndex;

            var foodVal = food.options[idx].value;
            alert(foodVal);
       }


       function show2() {
           var food = document.getElementsByName("food")[1];
           var str = "";

           for(var i=0; i<food.options.length; ++i) {
               if(food.options[i].selected) {
                   str += food.options[i].value + " ";
               }
           }

           alert(str +"먹고싶다.");

       }
        
    </script>

</head>
<body>
    
    <h1>음식 선택하기</h1>
    <form>
        <select name="food" onchange="show();">
            <option>---선택---</option>
            <option value="제육">제육</option>
            <option value="라면">라면</option>
            <option value="만두">만두</option>
            <option value="호빵">호빵</option>
            <option value="피자">피자</option>
        </select>

        <br><br><br>

        <select name="food" multiple="multiple" size="5">
            <option value="제육">제육</option>
            <option value="라면">라면</option>
            <option value="만두">만두</option>
            <option value="호빵">호빵</option>
            <option value="피자">피자</option>
        </select>

        <input type="button" value="선택" onclick="show2();">
    </form>


</body>
</html>

 


 

자바스크립트 부모 , 자식 탐색하기

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>dom</title>

    <script type="text/javascript">
        function searchPar() {
            //선택한 태그의 부모태그를 찾는 함수
            var child02 = document.getElementsByTagName("p")[1];

            var child02Par = child02.parentNode;//child02의 부모 객체를 받아온다.
            console.log(child02Par.nodeName);//child02Par (child02의 부모객체를 받아왔음)의 객체의 이름을 출력 
            child02Par.style.backgroundColor= "coral";
        }

        function searchChi() {
            //선택한 태그의 자식태그를 찾는 함수
            var parent01 = document.getElementsByTagName("div")[0];//elements는 무조건 배열로 전달받기 때문에 순서 정해줘야 함

            var parent01Child = parent01.childNodes;//자식이 하나일지 두개일지 , 여러개인지 모르니까 배열로 넘겨받는다.
                                                    //그럼 이 경우에 p가 3개 들어올거임
            var str = "";
            for(var i=0; i<parent01Child.length; ++i) {
                str += parent01Child[i].nodeName + " ";
            }

            console.log(str);//결과가  #text P #text P #text P #text 이렇게 출력된다.
            //dom의 입장에서 태그와 태그 사이에 텍스트가 들어갈 수 있으니, 텍스트가 들어갈 수 있는 공간 == 빈 공백 자체도 text노드로 관리한다.
            //div태그의 시작부터 종료까지 모든 태그들을 공백없이 붙인 상태에서 -> <div><p>child01</p><p>child02</p><p>child03</p></div>
            // 함수를 실행시키면 #text없이 P만 출력되는 것을 볼 수 있다.

            console.log(parent01Child[5]);
            parent01Child[5].style.backgroundColor="yellow";

        }

    </script>

</head>
<body>
    <h1>부모탐색, 자식탐색</h1>
    <div>
        <p>child01</p>
        <p>child02</p>
        <p>child03</p>
    </div>
    <button onclick="searchPar();">부모탐색</button>
    <button onclick="searchChi();">자식탐색</button>

    
</body>
</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>

    <script type="text/javascript">
        function eleCreate() {
            //엘리먼트 객체 생성 : createElement("String TagName");
            var div = document.createElement("div");
            //<div></div>

            //text 객체 생성 : createTextNode("String text");
            var txt = document.createTextNode("엘리먼트 생성 메소드");
            div.appendChild(txt);
            //<div>엘리먼트 생성 메소드</div>


            //방법 1
            //속성추가 : setAttributeNode(Attr attr);
            //var attr = document.createAttribute("style");
            //style = "";
            //attr.nodeValue = "border:2px solid blue";
            //style = "border:2px solid blue";

            //div.setAttributeNode(attr);
            //<div style = "border:2px solid blue">엘리먼트 생성 메소드</div>



            //방법2
            //속성추가 : setAttribute("attr", "value");
            div.setAttribute("style", "border:2px solid blue");

            document.body.appendChild(div);
        }
    </script>

</head>
<body>
    
    <button onclick="eleCreate();">엘리먼트 생성하기</button>

</body>
</html>

 

 


 

자바스크립트로 img 태그 와 속성을 설정하여 , 이미지 바꾸기

<!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 type="text/css">
        img, #imgView {
            width: 300px;
            height: 300px;
        }

    </style>

    <script type="text/javascript">
        function createImg() {
            var radios = document.getElementsByName("rdoBtn");
            var radioVal = "image/";

            for(var i=0; i<radios.length; ++i) {
                if(radios[i].checked) {
                    radioVal += radios[i].value;
                    break;
                }
            }

            console.log(radioVal);

            //1. img 태그 생성
            var img = document.createElement("img");
            //<img>

            //2. src 속성을 만들어서 , radioVal 값을 넣어준다.
            img.setAttribute("src", radioVal);

            //3.
            var div = document.getElementById("imgView");
            var chd = document.querySelector("#imgView > img");

            //chd를 방금 생성한 img 로 바꾸자
            div.replaceChild(img, chd);
            
        }   
        
        function deleteImg() {
            var img = document.querySelector("#imgView > img");
            img.setAttribute("src", " ");
        }
        
    </script>
</head>
<body>

    <input type="radio" name="rdoBtn" value="flower1.PNG">그림 1<br>
    <input type="radio" name="rdoBtn" value="flower2.PNG">그림 2<br>
    <input type="radio" name="rdoBtn" value="flower3.PNG">그림 3<br>

    <button onclick="createImg();">이미지 생성하기</button>
    <button onclick="deleteImg();">이미지 삭제하기</button>

    <div id="imgView"><img src=""></div>
</body>
</html>

 


 

자바스크립트 a태그를 이용하여 이미지 전환하기 

<!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 type="text/css">
        img {
            width: 300px;
            height: 300px;
        }
        a {
            font-size: 30px;
            text-decoration: none;
        }
    </style>

    <script type="text/javascript">
        window.onload = function () {
            var count = 1;
            var img = document.querySelector("img");
            var as = document.querySelectorAll("a");//a태그 전부 가져오기

            //왼쪽 a태그 클릭
            as[0].onclick = function() {
                console.log(count);
                var imgAlt = img.getAttribute("alt");//alt 속성 가져오기
                if(imgAlt == "flower1") {
                    count = 3;
                    img.setAttribute("alt","flower3");
                    img.setAttribute("src", "image/flower3.PNG");
                }
                else {
                    //img에 alt 속성을 변경
                    img.setAttribute("alt", "flower" + (--count));

                    //img의 src 속성을 변경
                    img.setAttribute("src", "image/flower" + count + ".PNG");
                    
                }

            }

            //오른쪽 a태그 클릭
            as[1].onclick = function() {
                console.log(count);
                var imgAlt = img.getAttribute("alt");
                
                if(imgAlt == "flower3") {
                    count = 1;

                    img.setAttribute("alt", "flower1");
                    img.setAttribute("src", "image/flower1.PNG");
                }
                else {
                    img.setAttribute("alt", "flower" + (++count));
                    img.setAttribute("src", "image/flower" + count + ".PNG");

                }

            }
        }

    </script>
</head>
<body>
    <div>
        <a href="#" id="lt">◁</a>
        <img alt="flower1" src="image/flower1.PNG">
        <a href="#" id="rt">▷</a>
    </div>
</body>
</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>

    <style type="text/css">
        p {
            border: 1px solid red;
        }

        #test01, #test02 {
            width: 300px;
            height: 300px;
            border: 1px solid blue;
        }
    </style>

    <script type="text/javascript">
        var cnt = 1;
        function addAppend() {
            var fieldset = document.getElementById("addElement");

            var p = document.createElement("p");

            //1.
            //var txt = document.createTextNode("자식태그들 중 마지막에 붙여넣는다");
            //p.appendChild(txt);


            //2.
            p.textContent = "자식태그들 중 마지막에 붙여넣는다";

            fieldset.appendChild(p);

            
        }

        function addBefore() {
            var fieldset = document.getElementById("addElement");
            var newP = document.createElement("p");

            newP.textContent = "엘리먼트의 앞에 붙여 넣는다." + (cnt++);

            var oldDiv = document.querySelector("fieldset > div");

            fieldset.insertBefore(newP, oldDiv);


        }


        function moveElement() {
            var moveEle = document.querySelector("fieldset").children[1];

            var addEle = document.body;
            addEle.appendChild(moveEle);
        }

        function addTest() {
            //test01 태그에 dom test라는 내용을 가진 div 태그 추가
            var getTest01 = document.getElementById("test01");
            
            var div = document.createElement("div");
            div.textContent="dom test";
            
            console.log("addTest");

            getTest01.appendChild(div);
        }

        function moveTest() {
            //test01 태그에 추가된 태그들을 test02로 이동시켜보자
            var test01 = document.querySelector("#test01").children;
            var test02 = document.getElementById("test02");


            test02.appendChild(test01);

        }

    
    </script>
</head>
<body>
    
    <h1>태그 추가하기</h1>
    <button onclick="addAppend();">appendChild()</button>
    
    <button onclick="addBefore();">insertBefore()</button>
    
    <button onclick="moveElement();">appendChild()를 이용한 엘리먼트 이동</button>

    <fieldset id="addElement">
        <legend>부모 태그</legend>
        <div>div태그</div>
    </fieldset>

    <hr>


</body>
</html>