관리 메뉴

한다 공부

[Web] JavaScript 본문

Dev/Web

[Web] JavaScript

사과당근 2021. 11. 9. 23:49

HTML을 이용해서 만든 웹페이지를, 사용자와 상호작용할 수 있도록 하기 위해 자바스크립트가 탄생했다.

 

<script>

지금부터 자바스크립트가 시작됨을 의미한다.

document.write('hello world'); 을 이용해 hello world등의 내용을 출력할 것이다. 

 

<input type= "button" value="hi" onclick="alert('hi')">

버튼을 만드는데, 그 이름은 hi이고 클릭시 alert, 즉 경고문구가 뜬다는 뜻이다. 이 때 출력 문구는 hi 이다.

 

여기서 onclick은 이벤트이다. 클릭했을 때 어떤 사건이 일어날지 정한다. 속성은 반드시 자바스크립트가 와야한다.

비슷한 것으로는 상태가 변경되었을 때를 나타내는 onchange등이 있다.


아래는 버튼을 누르면 배경색이 바뀌는 코드이다.

night, day 버튼이 각 각 존재하고 night 버튼을 누르면 배경색이 검정색으로, day 버튼을 누르면 배경색이 흰색으로 변한다.

<!--night 버튼 클릭하면 검정 배경으로,
day 버튼 클릭하면 하얀색 배경으로 변경-->
<!DOCTYPE html>
<html>
  <head>
      <meta charset="UTF-8">
      <title>Web2 - JavaScript</title>
  </head>
  <body>
      <input type= "button" value="night" onclick="
      document.querySelector('body').style.backgroundColor='black';">
      <!--body 태그를 black으로 변경-->
      
      <input type= "button" value="day" onclick="
      document.querySelector('body').style.backgroundColor='white';">
      <!--body 태그를 white으로 변경-->
      
  </body>
</html>

 

Boolean

1===1

true

1===2

false

같은지 확인하는 비교연산자로 === 가 쓰인다.

 

1&lt;2

true 

= (1<2) less than의 의미로 lt가 사용된다.

 

아래는 조건문을 이용하여 하나의 버튼을 누르면 배경 색을 변경해주는 코드이다.

배경이 흰색일땐, night 버튼이 생성되며 버튼을 누를 시 배경이 검정색으로 바뀐다.

배경이 검정색일땐, day 버튼이 생성되며 버튼을 누를 시 배경이 흰색으로 바뀐다.

<!DOCTYPE html>
<html>
  <head>
      <meta charset="UTF-8">
      <title>Web2 - JavaScript</title>
  </head>
  <body>
      <input id="night_day" type= "button" value="night" onclick="
      if (document.querySelector('#night_day').value === 'night') {
        document.querySelector('body').style.backgroundColor='black';
        document.querySelector('#night_day').value = 'day';
      }
      else {
        document.querySelector('body').style.backgroundColor='white';
        document.querySelector('#night_day').value = 'night';
      }
      ">
  </body>
</html>

 

 

리팩토링

코드의 중복을 줄이고 비효율적인 부분을 수정해 유지 보수를 쉽게 하기 위한 작업을 의미한다.

 

위 코드에서 if 문 안의 조건이 자기 자신의 상태를 나타내므로 this를 사용할 수 있다.

 

 document.querySelector('body') 부분 또한 중복이 되므로 변수로 담을 것이다.

var target =   document.querySelector('body');

 

위 코드와 같은 동작을 하지만 훨씬 효율적인 코드를 만들 수 있다.

<!DOCTYPE html>
<html>
  <head>
      <meta charset="UTF-8">
      <title>Web2 - JavaScript</title>
  </head>
  <body>
      <input type= "button" value="night" onclick="
      var target = document.querySelector('body');
      if (this.value === 'night') {
        target.style.backgroundColor='black';
        this.value = 'day';
      }
      else {
        target.style.backgroundColor ='white';
        this.value = 'night';
      }
      ">
  </body>
</html>

 

 

반복문과 배열

본문의 글씨가 어두운 색일 때, 배경을 어두운 색으로 변경하면 글씨가 안 보이는 경우가 생긴다.

이를 반복문과 배열을 이용해 해결해보자.

<!DOCTYPE html>
<html>
  <head>
      <meta charset="UTF-8">
      <title>Web2 - JavaScript</title>
  </head>
  <body>
    <h1>어두운 모드</h1>
    <h1>밝은 모드</h1>
      <input type= "button" value="night" onclick="
      var target = document.querySelector('body');
      if (this.value === 'night') {
        target.style.backgroundColor='black';
        this.value = 'day';

        var hlist = document.querySelectorAll('h1');
        var i = 0;
        while (i < hlist.length) {
          hlist[i].style.color = 'powderblue';
          i++;
        }
      }

      else {
        target.style.backgroundColor ='white';
        this.value = 'night';

        var hlist = document.querySelectorAll('h1');
        var i = 0;
        while (i < hlist.length) {
          hlist[i].style.color = 'blue';
          i++;
        }
      }
      ">
  </body>
</html>

실행화면은 위와 같다.

 

 

함수

익히 알다시피 효율성을 위해 함수를 사용한다.

즉 리팩토링을 위해 함수를 사용하는 것이다.

유지보수가 극단적으로 쉬워진다.

<!DOCTYPE html>
<html>
  <head>
      <meta charset="UTF-8">
      <title>Web2 - JavaScript</title>
      <!--this를 넘겨주고 self로 받음-->
      <script>
        function nightDayHandler(self) {
          var target = document.querySelector('body');
          if (self.value === 'night') {
            target.style.backgroundColor='black';
            self.value = 'day';

            var hlist = document.querySelectorAll('h1');
            var i = 0;
            while (i < hlist.length) {
              hlist[i].style.color = 'powderblue';
              i++;
            }
          }

          else {
            target.style.backgroundColor ='white';
            self.value = 'night';

            var hlist = document.querySelectorAll('h1');
            var i = 0;
            while (i < hlist.length) {
              hlist[i].style.color = 'blue';
              i++;
            }
          }
        }
      </script>
  </head>
  <body>
    <h1>어두운 모드</h1>
    <h1>밝은 모드</h1>
      <input type= "button" value="night" onclick="
      nightDayHandler(this);
      ">
  </body>
</html>

 

객체

이름이 있는 정리정돈 상자이다.

 

객채 생성은 아래와 같이 한다.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <h1> Object </h1>
    <h2> Create </h2>
    <script>
      var coworkers = {
        "programmer":"soyun",
        "designer":"sxyzn"
      };
      document.write("programmer : "+coworkers.programmer+"<br>");
      document.write("designer : "+coworkers.designer+"<br>");
    </script>

    <h2> Iterate </h2>
    <script>
      for (var key in coworkers) {
        document.write(key+' : '+coworkers[key]+ '<br>');
      }
    </script>

  </body>
</html>

 

실행 결과

 

 

정돈하기

<script> 안에 있는 내용을 colors.js 와 같은 별도의 파일로 분리시키고,

<script> 대신

<script src="color.js"> </script>

를 사용을 한다면 유지보수가 더욱 쉬워진다. 서버 입장에서도 cache에 js파일을 담아두면 되기 때문에 이 방법이 더 효율적이다.

 

 

 

 

 

 

 

 

 

 

 

[참고자료] 생활코딩 WEB2 - JavaScript

'Dev > Web' 카테고리의 다른 글

[Web] Cookie, Session  (1) 2023.05.13
[Web] MySQL  (0) 2021.11.22
[Web] Git  (0) 2021.11.02
[Web] CSS  (0) 2021.10.12
[Web] HTLM & Internet  (0) 2021.10.12