독학

♧9/22 생활코딩 [자바스크립트] 나이트데이토글 여러개넣기/this/리팩토링/반복문/배열/개수세기/데이터추가/반복문문법/

피자돈가스 2022. 9. 22. 23:22
<input id="night_day" type="button" value="night" onclick="
 
      if (document.querySelector('#night_day').value === 'night'){
      document.querySelector('body').style.backgroundColor='black';
    document.querySelector('body').style.color='white';
    document.querySelector('#night_day').value = 'day';
      } else {
    document.querySelector('body').style.backgroundColor='white';
      document.querySelector('body').style.color='black';
      document.querySelector('#night_day').value = 'night';
      }
      ">
 
 
 
이 코드를 페이지 맨 밑에도 넣어서 버튼 두개를 작동시키고 싶은데 이걸 그대로 복붙애서 넣으니 버튼이 night 로만 작동하고 day 버튼은 작동이 안됨. (그러나 위에꺼때문에 까매졌다가 밝아졌다가는 함 )
 
 
 
-해결방법 
 

<input id="night_day2" type="button" value="night" onclick="

 

      if (document.querySelector('#night_day2').value === 'night'){

      document.querySelector('body').style.backgroundColor='black';
    document.querySelector('body').style.color='white';

    document.querySelector('#night_day2').value = 'day';

      } else {
    document.querySelector('body').style.backgroundColor='white';
      document.querySelector('body').style.color='black';

      document.querySelector('#night_day2').value = 'night';

      }
      ">
 
 
 
이렇게 해주면 밑에서도 night day 하며 누를때마다 바뀜.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
그런데, 저 인덱스 태그를 가르키도록 약속하는 특수한 태그가 있다.
 
<input type="button" value="night" onclick="
 
      if (this.value === 'night'){
      document.querySelector('body').style.backgroundColor='black';
    document.querySelector('body').style.color='white';
    this.value = 'day';
      } else {
    document.querySelector('body').style.backgroundColor='white';
      document.querySelector('body').style.color='black';
      this.value = 'night';
      }
      ">
 
 
 
이렇게 this 로 바꾸어주고  인풋 타입 뭐시기뭐시기..이름안짓고 똑같이 저거랑 돌아간다.
 
 
 
이건 위아래 복사해도 둘다 잘 움직인다.






 







-그런데

document.querySelector('body')
 
이거 중복이자나 네개나 돼.
 
 
 
 
->
 
 
 
 
if (this.value === 'night'){

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

      document.querySelector('body').style.backgroundColor='black';
    document.querySelector('body').style.color='white';
    this.value = 'day';
      } else {
    document.querySelector('body').style.backgroundColor='white';
      document.querySelector('body').style.color='black';
      this.value = 'night';
      }

 



<input type="button" value="night" onclick="
 
      if (this.value === 'night'){
        var target = document.querySelector('body');
      target.style.backgroundColor='black';

    target.style.color='white';

    this.value = 'day';
      } else {

    target.style.backgroundColor='white';

      target.style.color='black';

      this.value = 'night';
      }
      "
 
 
한번더  중복제거한거다,
 
 
 
 
document.querySelector('body').style   
 
 
얘를
 
 ->

 target.style.

요렇게.

코드가 훨씬 간결해졌다.



이러면 이름 변수를 타겟으로 쓰는것들이 한꺼번에 바뀐다.!!










'음.. 나이트 테마 참 좋은데 링크 달린 글씨가 너무 어두워서 잘 안보이는걸?
->
버튼 클릭했을때 웹페이지에 있는 모든 링크를 스타일 속성을 밝게 해서 바꿀 수 도 있다.
그러나 링크가 1억개라면 매우 힘들겠지? 그럴 때 쓰는게 바로

반복문.




반복문을 쓰기 위해 필요한 배열을 공부해보자.


<배열>

-배열은 수납상자이다.

-배열의 문법과 성격을 살펴보자.


=>


var coworers = ["egoing", "leeche"];
 
코 워커스 라는 변수에 [ ] 안에 든 배열이라는 데이터 타입이 담긴 모양이다. 데이터 타입에 코워커스라는 이름을 붙인 것.





-가져오는 법

<h2>get</h2>
<script>
    document.write(coworers[0]);
</script>
 
 
 
 
=첫번째 자리에 있는 값은 0번째 라는 뜻이다.
(인덱스 0번은 이고잉이고, 1번은 리체)
 
 =

 

 








-개수 세기.

<h2>count</h2>
<script>document.write(coworers.length)
</script>
 
 
 

 

 

 

 

 

 

 

 

 

 

 

-데이터 추가하기 

데이터 추가하기

<script>
    coworers.push('두루');
    coworers.push('태호');
</script>
 
 
 
 
 
결과
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

총 4명이 됐으니까 4 가 뜨는것이당~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<반복문의 문법>

 

 

 

<h1>loop (반복문을 영어로 루프라고 한다)</h1>
    <ul>
        <script>
            document.write('<li>1</li>')
            document.write('<li>2</li>')
            document.write('<li>3</li>')
            document.write('<li>4</li>')
        </script>
    </ul>
   
 
 
여기서 2, 3 을 반복해서 나타내고 싶을 때! (3번 반복해보려면 어띃게 할까?.)
 
 
 
 
반복문에 쓰이는 문법인데
while(){}
 
 
이프 문법과 비슷하다.
() 괄호 안의 정보가 true 라면 {} 이 안에 있는 정보를 계속계속 반복하고,  false가 뜨면 반복이 끝나면서 while 다음의 정보가 실행된다. 이것이 반복문의 이론이당.
 
 
 
 
 
 
 
<body>
    <h1>loop (반복문을 영어로 루프라고 한다)</h1>
    <ul>
        <script>
            document.write('<li>1</li>');
            var i = 0;
            while(i <3){
            document.write('<li>2</li>');
            document.write('<li>3</li>');
            i=i+1;
            }
            document.write('<li>4</li>');
        </script>
    </ul>
</body>





= 2 랑 3을 3번 반복하고싶어서 만든 코드.
한번 돌때마다 i가 1씩 더해져서 i가 3보다 작을때까지만 반복하도록 만든 코드다.

결과















후.. 내가 또 i 를 1로 오타쳐놔서
무한 로딩에 빠졌는데 뭘 잘못쳤는지 도저히 못찾겠어서 울 애기한테 물어봤더니
힌트를 알려주면서




이렇게 말해줬다.. 학원에서도 오타때문에 질문 한번 했었는데
앞으론 머리를 쫌 써야겠다. 바보니?

근데 첨엔 다 이렇대.. 위안을 얻고 앞으로 잘해야지

안녕