반응형

클래스 속성 값으로 요소에 접근하기

배열형태로 반환

document.getElementseByClassName("class속성값");
<h3>4) 클래스명으로 접근하기</h3>
<div class="test"></div>
<p class="test"></p>
<ul class="test">
    <li></li>
    <li></li>
</ul>
<pre class="test test1"></pre>

<button onclick="accessClass();">클래스로 접근</button>

<script>
    function accessClass(){
        var arr = document.getElementsByClassName("test");
        console.log(arr);

        for(var i = 0; i < arr.length; i++){
            console.log(arr[i]);
        }
    }
</script>

반응형
반응형

네임 속성값으로 요소에 접근하기

document.getElementsByName("name속성값");
<h3>3) name속성 값으로 접근하기</h3>
<form action="">
    <fieldset>
        <legend>취미</legend>
        <input type="checkbox" name="hobby" id="sing" value="sing">
        <label for="sing">노래부르기</label>

        <input type="checkbox" name="hobby" id="game" value="game">
        <label for="game">게임하기</label>

        <input type="checkbox" name="hobby" id="walk" value="walk">
        <label for="walk">산책하기</label>
    </fieldset>
</form>

<div class="area" id="area3"></div>
<button onclick="accessName()">이름으로 접근</button>

<script>
    function accessName(){
        var hobby=document.getElementsByName("hobby");

        console.log(hobby);
        var checkedoption="";

        for(var i=0; i<hobby.length; i++){
            if(hobby[i].checked){
                checkedoption+=hobby[i].value+"<br>";
            }
        }

        var div3 = document.getElementById("area3");
        div3.innerHTML=checkedoption;

        // 한줄로한다면
        // document.getElementById("area3").innerHTML=checkedoption;
    }
</script>

반응형
반응형

태그명으로 요소에 접근하기

document.getElementByTagName("태그명");
<h3>2) 태그명으로 접근하기</h3>
<ul>
    <li>목록1</li>
    <li>목록2</li>
    <li>목록3</li>
    <li>목록4</li>
    <li>목록5</li>
</ul>

<button onclick="accessTag()">태그로 접근</button>

<script>
    function accessTag(){
        // 태그는 중복이 가능하기 때문에 배열에 담겨서 반환된다 ( [] )
        var list = document.getElementsByTagName("li"); // [li요소객체, li요소객체, ...]

        console.log(list);
        console.log(list.length); // 배열의 크기

        list[0].innerHTML="안녕하세요";
        list[3].innerHTML="반갑습니다";

        for(var i=0; i<list.length; i++){
            list[i].innerHTML = "안녕하세요"+(i+1);
        }
    }
</script>

좌) 원본 화면 / 중) 태그로 접근 버튼 클릭 후 / 우) 콘솔창 

반응형
반응형

아이디로 요소에 접근하기

document.getElementById("아이디명");
<h3>1) 아이디로 접근하기</h3>

<div class="area" id="area1"></div>

<button onclick="accessId();">아이디로 접근1</button>

<script>
    function accessId(){
        var area1 = document.getElementById("area1");

        console.log(area1);
        console.dir(area1); 
        
        // 선택된 요소에 속성들에 접근하여 값을 가져오거나 변경 가능
        // 속성에 접근하고자 한다면 -> 선택된요소.접근할속성명
        area1.innerHTML += "아이디로 접근성공! <br>";

        // 선택된 요소에 스타일 변경
        area1.style.width="100px";
        area1.style.height="100px";
        area1.style.backgroundColor="pink";
    }
</script>
<br><br>

<div class="area" id="area2" style="background-color: red;"></div>

<button onclick="accessId2();">아이디로 접근2</button>

<script>
    function accessId2(){
        var area2 = document.getElementById("area2");

        console.log(area2.style.backgroundColor); // 콘솔값 : red

        if(area2.style.backgroundColor == "red"){
            area2.style.backgroundColor="pink";
        }else{
            area2.style.backgroundColor="red";
        }
    }
</script>

클릭 전
1회 클릭
2회 클릭

 

반응형
반응형

데이터 출력 기본 구문

window.alert("알림창 출력문구");

window.console.log("콘솔창 출력문구");

document.write("화면 출력문구");

선택한요소.innerHTML/innerText = "해당 요소 출력문구";

document.write("화면 출력문구");

<h3>document.write('화면에출력할문);</h3>

<button onclick="documentWrite();">화면출력</button>

<script>
 function documentWrite(){
    // document.write('잘출력되는가');
    // document.write('<b>보올드</b> 이것도 잘 출력되나유<br><h3>잘가</h3>');
    // 문자열에 html 태그가 포함될 경우 태그 해석되어 적용

    var table="<table border='1'>";
        table+="<tr>";
        table+="<td>1</td>";
        table+="<td>2</td>";
        table+="</tr>";
        table+="</table>";

        document.write(table);
 }  

</script>

실행창에서 이동되어 표 출력(뒤로가기 불가)

선택한요소.innerHTML/innerText = "해당 요소 출력문구";

<button onclick="tagValue();">가져오기</button>

 <script>
     function tagValue(){
        var divEl = document.getElementById("area1"); // id가 area1인 div 객체정보를 담음
        console.log(divEl);
        console.dir(divEl);

        // 선택한 요소 내의 정보를 알고 싶다면 속성에 .을 통해 직접 접근하여 가져옴
        console.log(divEl.id);        // id : 해당요소의 id값을 콘솔에 출력
        console.log(divEl.className); // className : 해당요소의 className값을 콘솔에 출력

        console.log(divEl.innerHTML); // innerHTML : content영역안의 HTML태그포함한 텍스트를 콘솔에 출력
        console.log(divEl.innerText); // innerText : content영역안의 텍스트만 콘솔에 출력

        // 해당요소의 속성값을 가지고 올수도 있지만 값을 변경할수도 있다
        divEl.innerHTML="<em>innerHTML값 변경</em>";
        // innerHTML로 변경하면 출력할 문구에 html 태그가 있을 경우 태그로 인식
        
        // divEl.innerText="<b>innerText값 변경</b>";
        // innerText로 변경하면 출력할 문구에 html 태그가 있어도 문자열로 인식

        console.log(divEl.innerHTML);
        console.log(divEl.innerText);
     }
 </script>

좌) 버튼 클릭 전 / 우) 버튼 클릭 후
콘솔창

 

데이터를 입력받는 기본 구문(변수에 기록 가능)

변수 = window.confirm('질문내용');

변수 = window.prompt('질문내용');

변수 = 선택한요소.속성(id/className/innerHTML/innerText,...);

변수 = 선택한input요소.value;

window.confirm("질문내용");

confirm 호출시 질문내용과 확인/취소 버튼이 존재하는 알림창 발생

확인 버튼 클릭시 true, 취소 버튼 클릭시 false를 반환

<button onclick="testConfirm()">지루하신가요</button>
<br>
<div class="area" id="area2"></div>

<script>
 function testConfirm(){
     var result = window.confirm("지루하면 확인 아니면 취소를 누르시오");

     console.log(result);

     var divEl = document.getElementById("area2");

     if(result){
         divEl.innerHTML="<h3>지루하긴해요...</h3>";
     }
     else{
         divEl.innerHTML="<h3>아뇨 지루한데요</h3>"
     }
 }
</script>

좌) 확인 클릭시 결과 / 우) 취소 클릭시 결과

window.prompt("질문내용");

prompt 호출 시 "질문내용"과 입력할 수 있는 "텍스트 상자"와 "확인/취소"

버튼이 보여지는 알림창 발생

- 확인버튼 클릭시 텍스트 상자에 입력되어 있는 값이 반환

- 취소버튼 클릭시 null을 반환

<button onclick="testPrompt()">질문봇</button>
<div class="area" id="area3"></div>

<script>
 function testPrompt(){
     var hobby = window.prompt("취미가 무엇입니까?");
     var dinner = window.prompt("오늘 저녁 메뉴는 무엇입니까?");

     var divEl = document.getElementById("area3");

     divEl.innerHTML="당신의 취미는 "+hobby+"군요. "+dinner+"는 맛있겠네요";
    }
</script>

선택한input요소.value

아이디 : <input type="text" id="userId"> <br>
비밀번호 : <input type="password" name="" id="userPw"> <br>

<button onclick="testInput()">input</button>

<div class="area" id="area4"></div>

<script>
 function testInput(){
     var input1 = document.getElementById("userId");
     var input2 = document.getElementById("userPw");

     console.log(input1);
     console.log(input2);

    //  입력한값 확인
     console.log(input1.value);
     console.log(input2.value);

     var divEl = document.getElementById("area4");
     divEl.innerHTML=input1.value+"님의 비밀번호는 "+input2.value+"입니다";
     input1.value="수업끝";
     console.log(input1.value);
 }
</script>

 

반응형
반응형

스크립트 언어

프로그램 동작을 사용자의 요구에 맞게 수행하게 하기 위한 용도

매우 빠르게 배우고 짧은 소스코드로 상호작용 되도록 고안

 

자바스크립트란?

웹 브라우저에서 가장 기본적으로 많이 사용되는 인터프리터 방식의 스크립트 언어

- 자바 : 컴파일방식

   -> 컴파일 과정을 거치고 실행

   -> 소스코드를 모두 읽어낸 후 프로그램 실행

       (.java파일 -> .class파일 -> 실행(인터프리터 방식으로 실행된다))

   -> 소스코드에 문제가 있는 경우 컴파일 오류로 확인 가능

- 자바스크립트 : 인터프리터 방식

   -> 컴파일을 거치지 않고 곧바로 실행

   -> 소스코드를 한줄씩 읽어가며 실행(실시간으로 텍스트를 분석)

   -> 코드 상 문법적인 문제가 있는 경우 즉시 알리지 않고 실행시점에서 알려줌

   -> 자바 대비 오류 찾기가 어려움

 

자바스크립트 장단점

- 장점

  요소에 이벤트가 발생한 경우, 코드를 한줄씩 읽어 나가면서 수행되어 수행속도가 빠름

  간단한 코드 작성으로 초보자가 접하기 쉬운 언어

  (단순한 구조와 원칙, 접근제한자x, 메소드 정의시 반환형 정의x, 변수 선언시 자료형 설정x)

- 단점

  웹에 특화된 기술로 내부에서 제공되는 기능이 제한적

  HTML 내에 소스코드를 작성하는 경우 외부에 공개되어 보안에 취약

 

소스코드 작성 위치에 따른 종류

1. inline(인라인) 방식

이벤트를 부여하고자 하는 요소 내에 간단한 소스코드를 작성하여 실행

태그 내에 직접적으로 실행할 간단한 소스코드를 작성하여 실행시킨다

주로 실행할 코드가 적을 경우 사용한다

태그명 이벤트속성="해당 요소에 해당 이벤트가 발생했을 때 실행할 소스코드"
<!-- 버튼을 클릭했을 때(onclick) 이벤트 발행 알림참 띄워보기 -->
<button onclick="window.alert('네가 버튼을 눌렀구나')">알림창 출력</button><br><br>
<button onclick="console.log('콘솔창에 적힌단다')">콘솔창 출력</button> 
<!-- F12의 콘솔창에서 확인가능 -->
<!-- 콘솔창(개발자도구) : 주로 디버깅용으로 사용 -->

2. internal(내부) 방식

해당 html 문서 내에 script 태그 내에 소스코드를 작성하여 실행

script태그 영역에 함수단위로 소스코드를 작성한 후 어떤 요소에 어떤 이벤트 발생시 해당 함수를 호출하여 실행

(script 태그는 head, body태그 내에서 모두 작성 가능)

<!-- 인라인방식 + 내부방식 -->
<button onclick="함수();">함수버튼</button> <!-- 버튼을 클릭하면 함수가 호출되어 실행된다 -->
<br><br>

<!-- 내부방식 -->
<button id="btn">콘솔버튼</button>

<script>
  // 한줄 주석
  /* 여러줄 주석 */

  function 함수(){
      window.alert('함수를 실행하여 버튼 눌림');
  }

  //이벤트를 적용시키고자 하는 요소의 객체를 가지고와서 변수에 담는다
  var btn = document.getElementById("btn"); //담겨있는 객체 정보 : <button id="btn">콘솔버튼</button>

  btn.onclick = function(){ //이름없는 익명함수
    console.log('내부방식으로 콘솔 출력');
    함수(); //함수 내부에서 이미 정의되어있는 함수 호출 가능
  }          
</script>

3. external(외부) 방식

소스코드들을 별도의 .js파일로 만든 후 가져와 사용하는 방법

별도의 .js 파일로 소스코드를 작성하고 해당 html에 가져다가 실행하는 방법

function test(){
    window.alert('외부js실행됨');
}
<script src="resources/test.js">
<button onclick="test();">알림창 출력</button>
<button onclick="함수();">함수 출력</button>

반응형

+ Recent posts