<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>dev_ysh.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Tue, 19 Sep 2023 23:39:52 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>dev_ysh.log</title>
            <url>https://velog.velcdn.com/images/ysh_dvp/profile/c2f2a8aa-4e1e-4840-9c95-1bc9c75fe6a6/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. dev_ysh.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/ysh_dvp" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[마우스에 손 올리기 너무 귀찮다]]></title>
            <link>https://velog.io/@ysh_dvp/%EB%A7%88%EC%9A%B0%EC%8A%A4%EC%97%90-%EC%86%90-%EC%98%AC%EB%A6%AC%EA%B8%B0-%EB%84%88%EB%AC%B4-%EA%B7%80%EC%B0%AE%EB%8B%A4</link>
            <guid>https://velog.io/@ysh_dvp/%EB%A7%88%EC%9A%B0%EC%8A%A4%EC%97%90-%EC%86%90-%EC%98%AC%EB%A6%AC%EA%B8%B0-%EB%84%88%EB%AC%B4-%EA%B7%80%EC%B0%AE%EB%8B%A4</guid>
            <pubDate>Tue, 19 Sep 2023 23:39:52 GMT</pubDate>
            <description><![CDATA[<p>Ctrl + Shift + [ : 현재 영역 접시
Ctrl + Shift + ] : 현재 영역 펼치기
Ctrl + K + 0(숫자) : 전체 접기
Ctrl + K + J : 전체 펼치기</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[234. 속성]]></title>
            <link>https://velog.io/@ysh_dvp/234.-%EC%86%8D%EC%84%B1</link>
            <guid>https://velog.io/@ysh_dvp/234.-%EC%86%8D%EC%84%B1</guid>
            <pubDate>Wed, 13 Sep 2023 15:13:33 GMT</pubDate>
            <description><![CDATA[<h3 id="1-attr">1. attr</h3>
<ul>
<li>HTML의 속성을 취급한다.<pre><code class="language-js">$(&#39;선택자&#39;).attr(&#39;속성명&#39;) 
//속성값 가져오기

</code></pre>
</li>
</ul>
<p>$(&#39;선택자&#39;).attr(&#39;속성명&#39;,&#39;값&#39;)
// 값 넣기</p>
<pre><code>&lt;br&gt;

### attr 예제

```js
$(&#39;img&#39;).attr(&#39;src&#39;,&#39;./img/girl.jpg&#39;)
// img의 src 속성에 ./img/girl.jpg 라는 값을 넣는다.</code></pre><h3 id="2-prop">2. prop</h3>
<ul>
<li>자바스크립트의 속성을 취급한다.<pre><code class="language-js">$(&#39;img&#39;).prop(&#39;src&#39;,&#39;./img/girl.jpg&#39;)</code></pre>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[230. 무한스크롤]]></title>
            <link>https://velog.io/@ysh_dvp/230.-%EB%AC%B4%ED%95%9C%EC%8A%A4%ED%81%AC%EB%A1%A4</link>
            <guid>https://velog.io/@ysh_dvp/230.-%EB%AC%B4%ED%95%9C%EC%8A%A4%ED%81%AC%EB%A1%A4</guid>
            <pubDate>Wed, 13 Sep 2023 14:59:38 GMT</pubDate>
            <description><![CDATA[<h3 id="무한스크롤">무한스크롤</h3>
<ul>
<li>스크롤바가 맨 밑에(근처) 닿으면 동작
scroll_bottom = scrollTop +  모니터 높이
문서 높이 &lt;= scroll_bottom 하면 요소 추가<pre><code class="language-js">if($(document).height() &lt;= scroll_bottom)</code></pre>
</li>
</ul>
<h3 id="요소-삽입">요소 삽입</h3>
<h4 id="1-append">1. append</h4>
<pre><code class="language-js">$(&#39;선택자&#39;).append(&#39;삽입할 코드&#39;);</code></pre>
<h4 id="append-to">append to</h4>
<pre><code class="language-js">$(&#39;삽입할 코드&#39;).appendTo(&#39;선택자&#39;);</code></pre>
<p>append (To) 는 선택한 요소의 마지막 자식으로 들어간다.</p>
<ul>
<li>주의
css를 같이 명시하는 경우, append 와 appendTo 가 아래와 같이 차이 난다<pre><code class="language-js">$(&#39;list&#39;).appendTo(&#39;body&#39;).css({color:&#39;red&#39;})
해설 :  red 가 list에 담아놓은 요소에 적용됨

</code></pre>
</li>
</ul>
<p>$(&#39;body&#39;).append(&#39;list&#39;).css({color:&#39;orange&#39;}) 
해설 : orange 가 body에 적요됨</p>
<pre><code>&lt;br&gt;


#### 2. prepend
```js
$(&#39;선택자&#39;).prepend(&#39;삽입할 코드&#39;);</code></pre><h4 id="prependto">prependTo</h4>
<pre><code class="language-js">$(&#39;삽입할 코드&#39;).prependTo(&#39;선택자&#39;)</code></pre>
<p>prepend(To)는 선택한 요소의 첫 번째 자식으로 들어간다.</p>
<br>

<h4 id="3-무한스크롤-예제">3. 무한스크롤 예제</h4>
<pre><code class="language-js">let d_height = $(document).height();
//(변수 d_height 에 $(document).height(); , 즉 문서의 높이값을 저장시킴) 

    $(window).scroll(function(){ // 윈도우 창에서 스크롤이 되면 
        let s_bot = $(window).scrollTop() + $(window).height();
      // 변수 s_bot에 scrollTop 값 + 모니터 높이를 계싼한 값을 저장한다.


        if(s_bot &gt;= d_height) { 
          // s_bot 값이 d_height 값보다 크거나 같을 때
            for(let i=0; i&lt;20; i++) {
                let list = `&lt;h1&gt;비트스터디${i+1}&lt;/h1&gt;`; 
                $(list).appendTo(&#39;body&#39;).css({color:&#39;red&#39;}) 
            }
          // list 를 body 에 20번 넣는다. 색은 red


            d_height = $(document).height(); 
              // 계산된 d_height 값을 다시 저장시킨다.
        }
    });

})</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[227. 클래스변경]]></title>
            <link>https://velog.io/@ysh_dvp/227.-%ED%81%B4%EB%9E%98%EC%8A%A4%EB%B3%80%EA%B2%BD</link>
            <guid>https://velog.io/@ysh_dvp/227.-%ED%81%B4%EB%9E%98%EC%8A%A4%EB%B3%80%EA%B2%BD</guid>
            <pubDate>Wed, 13 Sep 2023 14:28:02 GMT</pubDate>
            <description><![CDATA[<h3 id="클래스-추가-삭제">클래스 추가, 삭제</h3>
<h3 id="1-추가">1. 추가</h3>
<pre><code class="language-js">$(&#39;선택자&#39;).addClass(&#39;클래스명&#39;)</code></pre>
<h3 id="2-삭제">2. 삭제</h3>
<pre><code class="language-js">$(&#39;선택자&#39;).removeClass();

=&gt; 모든 클래스를 삭제한다.


$(&#39;선택자&#39;).removeClass(&#39;클래스&#39;);

=&gt; 클래스 한 개 삭제


$(&#39;선택자&#39;).removeClass(&#39;클래스명 클래스명 클래스명&#39;)

=&gt; 삭제할 클래스가 여러 개 일 때 사용</code></pre>
<ul>
<li>체이닝 : 선택자가 같으면 함수끼리 . 을 이용하여 붙여서 사용한다.</li>
</ul>
<br>

<pre><code class="language-js">$(&#39;#btn_red&#39;).click(function(){
  (#btn_red 를 클릭했을 때의 기능)

  $(&#39;box&#39;).addClass(&#39;red&#39;).removeClass(&#39;green&#39;).removeClass(&#39;blue&#39;);
  (box 클래스에 red 라는 클래스를 추가하고, green , blue 클래스를 삭제한다.

  $(&#39;#btn_green&#39;).click(function(){
    (#btn_green을 클릭했을 때의 기능)

    $(&#39;#box&#39;).removeClass(&#39;red&#39;); 
    $(&#39;#box&#39;).addClass(&#39;green&#39;);
    $(&#39;#box&#39;).removeClass(&#39;blue&#39;);
    })
      (green 클래스를 추가하고 red, blue 클래스를 삭제한다.)

  $(&#39;#btn_blue&#39;).click(function(){
    (#btn_blue)를 클릭했을 떄의 기능

    $(&#39;#box&#39;).removeClass(&#39;red&#39;); 
    $(&#39;#box&#39;).removeClass(&#39;green&#39;);
    $(&#39;#box&#39;).addClass(&#39;blue&#39;);
    })
  (blue 클래스를 추가하고 red, green 클래스를 삭제한다.
})</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[224. 이벤트(마우스)]]></title>
            <link>https://velog.io/@ysh_dvp/224.-%EC%9D%B4%EB%B2%A4%ED%8A%B8%EB%A7%88%EC%9A%B0%EC%8A%A4</link>
            <guid>https://velog.io/@ysh_dvp/224.-%EC%9D%B4%EB%B2%A4%ED%8A%B8%EB%A7%88%EC%9A%B0%EC%8A%A4</guid>
            <pubDate>Wed, 13 Sep 2023 13:49:26 GMT</pubDate>
            <description><![CDATA[<h3 id="이벤트마우스">이벤트(마우스)</h3>
<ul>
<li>속성 종류</li>
</ul>
<pre><code class="language-js">1. $(&#39;선택자&#39;).click(function(){})
- 한번 클릭</code></pre>
<br>

<pre><code class="language-js">2. $(&#39;선택자&#39;).dbclick(function(){})
- 더블 클릭</code></pre>
<br>

<pre><code class="language-js">3. $(&#39;선택자&#39;).mousemove(function(){})
- 해당 요소 위에서 마우스 움직일 때 동작</code></pre>
<br>

<pre><code class="language-js">4. $(&#39;선택자&#39;).mouseover(function(){})
- 마우스가 올라갔을 때, 버블링 효과</code></pre>
<br>

<pre><code class="language-js">5. $(&#39;선택자&#39;).mouseout(function(){})
- 마우스가 나갔을 때, 버블링 효과</code></pre>
<br>

<ul>
<li><p>버블링 효과란?
(부모자식관계) 두 개의 요소가 겹쳐있을 때 나타나는 현상
자식요소에 마우스 오버/아웃 이벤트가 발생했을 때, 부모요소에 다시 마우스오버/아웃 된 것 같은 효과</p>
</li>
<li><p>버블링 효과 막기
event.stopPropagation() 을 자식한테 주기
감싸고 있는 부모 요소의 이벤트가 반응하지 않게 함</p>
</li>
</ul>
<br>

<pre><code class="language-js">6. $(&#39;선택자&#39;).mouseenter(function(){})
- 마우스가 올라갔을 때, 버블링효과 없음</code></pre>
<br>

<pre><code class="language-js">7. $(&#39;선택자&#39;).mouseleave(function(){})
- 마우스가 나갔을 때, 버블링효과 없음</code></pre>
<br>

<p>1 ~ 7번까지는 아래 코드로 대체 가능</p>
<pre><code class="language-js">$(document).on(&#39;이벤트&#39;,&#39;선택자&#39;,function(){
      기존 것과 달리 나중에 js로 추가한 요소도 알아볼 수 있다.
})</code></pre>
<br>

<ul>
<li>이벤트 바인딩 : 메모리적으로 좀 더 유리함<pre><code class="language-js">$(&#39;선택자&#39;).on({
이벤트:function(){
  ...
},
  이벤트:function(){
    ...
  }
})</code></pre>
</li>
</ul>
<br>

<pre><code class="language-js">7. $(&#39;선택자&#39;).hover(function(){
    // 마우스 올라갔을 때의 기능 코드
}, function (){
   // 마우스 빠졌을 때의 기능 코드
}) </code></pre>
<br>
]]></description>
        </item>
        <item>
            <title><![CDATA[233. 이벤트(브라우저)]]></title>
            <link>https://velog.io/@ysh_dvp/233.-%EC%9D%B4%EB%B2%A4%ED%8A%B8%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80</link>
            <guid>https://velog.io/@ysh_dvp/233.-%EC%9D%B4%EB%B2%A4%ED%8A%B8%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80</guid>
            <pubDate>Wed, 13 Sep 2023 13:26:49 GMT</pubDate>
            <description><![CDATA[<h4 id="브라우저-이벤트">브라우저 이벤트</h4>
<h3 id="1-resize">1. resize</h3>
<pre><code class="language-js">$(&#39;선택자&#39;).resize(()=&gt;{})
$(&#39;선택자&#39;).resize(function(){

}

resize : 브라우저의 사이즈가 바뀔 때마다 동작한다</code></pre>
<br>

<h3 id="2-scroll">2. scroll</h3>
<pre><code class="language-js">$(&#39;선택자&#39;).scroll(()=&gt;{})
$(&#39;선택자&#39;).scroll(function(){

}

scroll : 스크롤바 움직일 때마다 동작한다.</code></pre>
<pre><code class="language-js">$(&#39;선택자&#39;).offset().top 

문서의 최상단으로부터 해당 요소의 상단까지의 거리를 px로 나타냄</code></pre>
<pre><code class="language-js">$(&#39;선택자&#39;).scrollTop()

문서의 최상단으로부터 현재 화면의 상단까지의 거리를 px로 나타냄</code></pre>
<br>

<h3 id="3-1-예제-scroll">3-1. 예제 scroll</h3>
<pre><code class="language-js">$(window).scroll(function(){
     console.log($(&#39;.box).offset().top, $(window).scrollTop())
    (콘솔창 출력 코드 =&gt; 문서의 최상단부터 클래스 box 요소의 상단까지의 거리(px))  


      if($(&#39;box).offset().top &lt;= $(window).scrollTop(){
        $(&#39;.box&#39;).css({
          background : &quot;blue&quot;
    }
       (위 if 문 해설 : 문서의 최상단부터 클래스 box요소의 상단까지의 거리(px) 가  문서 최상단부터 현재 화면의 상단까지의 거리보다 작거나 같을 때,
      클래스 box 요소의 css 인 background 를 blue 색을 적용해라.)


      else {
        $(&#39;.box&#39;).css({
          background:&#39;red&#39;
        })
    }
});

    (위 else 문 해설 :  클래스 box의 css인 background에 red 를 적용해라 
</code></pre>
<br>

<h3 id="3-2-예제-resize">3-2. 예제 resize</h3>
<pre><code class="language-js">$(window).resize(()=&gt;{

     if(window.innerWidth &gt;= 1000) {
        $(&#39;body&#39;).css({
           background: &#39;pink&#39;
        })
      }
      (위 if 문 해설 : 브라우저 안 가로 사이즈가 1000보다 크거나 같을 때, body 의 background에 pink 적용해라)


     else {
           $(&#39;body&#39;).css({
           background: &#39;transparent&#39;
         })
      }
    }
    (else 문 해설 : body의 background 를 transparent 적용해라)</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[218. 제이쿼리]]></title>
            <link>https://velog.io/@ysh_dvp/218.-%EC%A0%9C%EC%9D%B4%EC%BF%BC%EB%A6%AC</link>
            <guid>https://velog.io/@ysh_dvp/218.-%EC%A0%9C%EC%9D%B4%EC%BF%BC%EB%A6%AC</guid>
            <pubDate>Mon, 11 Sep 2023 14:05:56 GMT</pubDate>
            <description><![CDATA[<p>제이쿼리는 이미 만들어져 있는 js 함수(기능)들을 (다운 또는 CDN 방식으로) 가져다 쓰는 것.
이름만 불러서 사용하는 방식</p>
<h3 id="제이쿼리-사용시-필수로-필요한-것">제이쿼리 사용시 필수로 필요한 것</h3>
<h4 id="1-제이쿼리-파일">1. 제이쿼리 파일</h4>
<p>-파일 다운받기
-CDN : <a href="http://code.jquery.com">http://code.jquery.com</a>
-$ (jq 파일 있을 때) 제이쿼리라고 컴퓨터가 인식</p>
<pre><code class="language-js">    &lt;!-- 특정버전 다운 --&gt;
    &lt;script src=&quot;https://code.jquery.com/jquery-1.12.4.js&quot;&gt;&lt;/script&gt;

    &lt;!-- 최신버전 알아서 다운 --&gt;
    &lt;!-- &lt;script src=&quot;https://code.jquery.com/jquery-latest.js&quot;&gt;&lt;/script&gt; --&gt;

    &lt;!-- js 난독화 모드 --&gt;
    &lt;!-- &lt;script src=&quot;https://code.jquery.com/jquery-1.12.4.min.js&quot;&gt;&lt;/script&gt; --&gt;</code></pre>
<pre><code class="language-js">$(document).ready(function(){

});</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[177. 부모자식형제잡기]]></title>
            <link>https://velog.io/@ysh_dvp/177.-%EB%B6%80%EB%AA%A8%EC%9E%90%EC%8B%9D%ED%98%95%EC%A0%9C%EC%9E%A1%EA%B8%B0</link>
            <guid>https://velog.io/@ysh_dvp/177.-%EB%B6%80%EB%AA%A8%EC%9E%90%EC%8B%9D%ED%98%95%EC%A0%9C%EC%9E%A1%EA%B8%B0</guid>
            <pubDate>Mon, 11 Sep 2023 13:56:24 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-html">   &lt;div id=&quot;parent&quot;&gt;
        &lt;div class=&quot;child&quot; id=&quot;child00&quot;&gt;자식0&lt;/div&gt;
        &lt;div class=&quot;child&quot; id=&quot;child01&quot;&gt;자식1&lt;/div&gt;
        &lt;div class=&quot;child&quot; id=&quot;child02&quot;&gt;자식2&lt;/div&gt; 
    &lt;/div&gt;</code></pre>
<pre><code class="language-css">.child {
    width: 100px;
    height: 100px;
    background-color: pink;
    margin: 50px; 
 }</code></pre>
<pre><code class="language-js">
자식요소 개수 : parent.childElementCount

- 요소 - 
  우리 눈에 보이는 DOM 구조 그대로 인식하면 됨
  이전요소 : 나.previousElementSibling
  다음요소 : 나.nextElementSibling

  부모찾기 : 자식요소.parentElement
  첫번째자식 : 부모.fistElementChild
  마지막자식 : 부모.lastElementChild

  - 노드 - 
  빈칸들도 노드로 치키 때문에 사용할 때 애매함
  자식 노드들 다 잡기 : parent.childNodes;
  이전노드 : 요소잡기.previousSibling
  다음노드 : 요소잡기.nextSibling


let parent = document.getElementById(&#39;parent&#39;);
let child = document.getElementsByClassName(&#39;child&#39;);
해설 : 각 변수에 id 값과 className이 &#39;parent&#39;, &#39;child&#39; 인 요소 저장시키기.


parent.style.border = &quot;1px solid&quot;;
parent.style.backgroundColor = &quot;skyblue&quot;;
parent.style.boxShadow = &quot; 0 0 5px 0 #000&quot;
해설: 자바스크립트로 css 적용시키기.</code></pre>
<pre><code class="language-js">for(let i =0; i&lt;parnet.childElementCount; i++){
  chile[i].style.border=&quot;1px solid&quot;;
  chile[i].style.background=&quot;skyblue&quot;;
  chile[i].style.boxShadow=&quot;0 0 5px 0&quot;;
}

 해설 : i 가 부모의 자식 수보다 작을 떄까지 i값에 1을 더해라
 child[0] / child[1] / child[2] 에게 해당 css 적용됨</code></pre>
<br>

<pre><code class="language-js">[자식 0 기준으로 자식 2 배경색 파란색으로 변경]

child[0].parentElement.lastElementChild.style.background=&quot;red&quot;;
child[0].next.ElementSibling.nestElementSibling.style.background = &quot;blue&quot;;</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[174. 자바스크립트]]></title>
            <link>https://velog.io/@ysh_dvp/174.-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8</link>
            <guid>https://velog.io/@ysh_dvp/174.-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8</guid>
            <pubDate>Mon, 11 Sep 2023 13:06:03 GMT</pubDate>
            <description><![CDATA[<p>자바와는 별개
HTML 구조에 상관없이 (한번에 하나씩) 요소를 선택할 수 있다.
모든 요소를 버튼화 시킬 수 있다. (onclick)
css 적용시 인라인 방식으로 적용된다.
끝날 때마다 ; (세미콜론) 붙일 것.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[171. 화살표함수]]></title>
            <link>https://velog.io/@ysh_dvp/171.-%ED%99%94%EC%82%B4%ED%91%9C%ED%95%A8%EC%88%98</link>
            <guid>https://velog.io/@ysh_dvp/171.-%ED%99%94%EC%82%B4%ED%91%9C%ED%95%A8%EC%88%98</guid>
            <pubDate>Thu, 07 Sep 2023 23:48:46 GMT</pubDate>
            <description><![CDATA[<h3 id="화살표-함수">화살표 함수</h3>
<ul>
<li><p>화살표 함수는 function 키워드 대신 화살표(=&gt;) 를 사용해서 보다 간략한 형식으로 함수를 선언할 수 있다.
하지만 모든 경우에 화살표 함수를 사용하는 건 아님</p>
</li>
<li><p>화살표 함수는 익명함수로만 사용할 수 있다.
그래서 화살표 함수를 호출하기 위해서는 함수 표현식을 사용한다.</p>
</li>
</ul>
<h4 id="es5">ES5</h4>
<pre><code class="language-js">    let tmp = function(x){
      return x;
    }</code></pre>
<h4 id="es6">ES6</h4>
<pre><code class="language-js">    let tmp = (x) =&gt; {
      return x;
    }</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[196. classList]]></title>
            <link>https://velog.io/@ysh_dvp/196.-classList</link>
            <guid>https://velog.io/@ysh_dvp/196.-classList</guid>
            <pubDate>Thu, 07 Sep 2023 10:50:47 GMT</pubDate>
            <description><![CDATA[<h3 id="class-추가-삭제-변경">class 추가, 삭제, 변경</h3>
<h4 id="classname--문자열로-가져옴">className : 문자열로 가져옴</h4>
<h4 id="classlist--배열로-가져옴">classList : 배열로 가져옴</h4>
<br>

<h3 id="classname">className</h3>
<ul>
<li>특정요소의 클래스 값을 문자형태로 가져온다.
(실수로라도) 해당 요소에 클래스 사이에 빈칸들이 있으면 split(&quot;&quot;)로 분리시킬 때 방 번호 잡기 힘들다.<pre><code class="language-js">요소.className</code></pre>
<br>

</li>
</ul>
<h3 id="classlist">classList</h3>
<ul>
<li>배열로 받아온다.
클래스가 하나만 있어도 0번방
(읽기 전용 프로퍼티)</li>
</ul>
<pre><code class="language-js">요소.classList</code></pre>
<br>

<h3 id="1-확인">1. 확인</h3>
<pre><code class="language-js">    [보기] let 변수 = document.getElementById(&#39;아이디값&#39;);

    console.log(변수);
    출력 : &lt;div class=&quot;클래스명 클래스명 클래스명&quot;id=&quot;아이디값&quot;&gt;txt&lt;/div&gt;

    console.log(변수.className); 
    출력 : &quot; 클래스명 클래스명 클래스명&quot;

    console.log(변수.classList); 
    출력 : 배열형태로 [&#39;클래스명&#39;, &#39;클래스명&#39;, &#39;클래스명&#39;]
</code></pre>
<br>

<h3 id="2-추가">2. 추가</h3>
<p>-한개만 추가-</p>
<pre><code class="language-js">    요소.classList.add(&#39;클래스명&#39;)
    요소.classList+=&#39;클래스명&#39;</code></pre>
<p>-여러개 추가-</p>
<pre><code class="language-js">    요소.classList.add(&#39;클래스명&#39;, &#39;클래스명&#39;,...)
    요소.classList+=&#39;클래스명 클래스명...&#39;</code></pre>
<br>

<h3 id="3-수정">3. 수정</h3>
<pre><code class="language-js">    요소.classlist.replace(&quot;없앨 문자열&quot;, &quot;삽입할 문자열&quot;)</code></pre>
<br>

<h3 id="4-삭제">4. 삭제</h3>
<pre><code class="language-js">    요소.classlist.remove(&#39;클래스&#39;)
    요소.classList.remove(&#39;클래스&#39;, &#39;클래스&#39;.&#39;클래스&#39;,...)
    요소.className = &quot;&quot;; // =&gt; (전부 다 삭제할 경우)</code></pre>
<br>

<h3 id="5-toggle">5. toggle</h3>
<pre><code class="language-js">    요소.classList.toggle(&#39;클래스명&#39;);
    요소.classList.toggle(&#39;클래스명&#39;);

    해당 요소에 클래스가 있으면 삭제
    없으면 넣어줌</code></pre>
<br>

<h3 id="6-contain">6. contain</h3>
<pre><code class="language-js">    해당 요소에 클래스가 있는 지 확인
    있으면 true, 없으면 false

    요소.classList.contain(&#39;클래스명&#39;);
    출력 : true or false</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[188. keyCode]]></title>
            <link>https://velog.io/@ysh_dvp/188.-keyCode</link>
            <guid>https://velog.io/@ysh_dvp/188.-keyCode</guid>
            <pubDate>Wed, 06 Sep 2023 23:53:11 GMT</pubDate>
            <description><![CDATA[<h3 id="keycode">keyCode</h3>
<ul>
<li>키보드 각각의 키마다 가지고 있는 고유의 값 (정수)</li>
</ul>
<p>HTML</p>
<pre><code class="language-html">    &lt;input type=&quot;text&quot; id=&quot;UID&quot; onkeyup=&quot;로그인함수() &quot; onmouseover=&quot;&quot;&gt;
    &lt;input type=&quot;text&quot; id=&quot;UPW&quot; onkeyup=&quot;로그인함수() &quot;&gt;
    &lt;input type=&quot;button&quot; value=&quot;로그인&quot; onclick=&quot;로그인함수()&quot;&gt;</code></pre>
<br>

<p>script</p>
<pre><code class="language-js">    function 로그인함수() {
        console.log(event.keyCode);

        if(event.keyCode == 13 ||     event.keyCode==undefined) {
            let uid = document.getElementById(&#39;UID&#39;).value;
            let upw = document.getElementById(&#39;UPW&#39;).value;

            console.log(&quot;로그인중&quot;, uid, upw)
        }
    }</code></pre>
<br>

<p>해설</p>
<pre><code class="language-js">  function 로그인함수 의 기능
    사용자가 keyCode 13 (enter) 를 입력하거나, || keyCode가 undefined 일 때,
    ID가 &#39;UID&#39; 와 &#39;UPW&#39; 인 value 값을 console 창에 출력한다. (아래와 같이)
    console.log(&quot;로그인중&quot;, uid, upw)
    출력 : 로그인중, uid, upw</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[183. 문자열찾기]]></title>
            <link>https://velog.io/@ysh_dvp/183.-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%B0%BE%EA%B8%B0</link>
            <guid>https://velog.io/@ysh_dvp/183.-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%B0%BE%EA%B8%B0</guid>
            <pubDate>Wed, 06 Sep 2023 09:18:48 GMT</pubDate>
            <description><![CDATA[<h3 id="문자열-찾기">문자열 찾기</h3>
<ul>
<li>특정 문자열에서 필요한 위치에 있는 문자(열)을 구한다.</li>
<li>특정 위치부터 잘라낼 수도 있다.</li>
<li>특정 문자를 다른 문자로 치환할 수 있다.</li>
<li>0번째부터 시작</li>
</ul>
<pre><code class="language-js">[보기]
let string = &quot;ABCDEFGHIJKLMNOPQRSTUVWXDYZ&quot;
console.lot(string.length); // (해당 문자열의 개수 = 27)
</code></pre>
<h4 id="1-특정-문자의-인덱스번호-찾기">1. 특정 문자의 인덱스번호 찾기</h4>
<pre><code class="language-js">console.log(&quot;D 위치: &quot; + string.indexOf(&quot;D&quot;)); 
출력 : D 위치 :  3 // 처음 나오는(?) &quot;D&quot; 의 위치 

console.log(&quot;D 위치: &quot; + string.lastIndexOf(&quot;D&quot;));
출력 : D 위치 : 24 // 마지막 &quot;D&quot; 의 위치 </code></pre>
<br>

<h4 id="2-특정번호로-문자-찾기">2. 특정번호로 문자 찾기</h4>
<pre><code class="language-js">console.log(&quot;3번쨰: &quot; + string.charAt(3));
출력 : 3번째 : D 
해설  :해당 문자열의 3(인덱스번호) 위치에 있는 문자는 &quot;D&quot;</code></pre>
<br>

<h4 id="3-1-x번째부터-끝까지">3-1. X번째부터 끝까지</h4>
<pre><code class="language-js">console.log(&quot;3~:&quot; + string.slice(3));
console.log(&quot;3~:&quot; + string.substring(3));
console.log(&quot;3~:&quot; + string.substr(3));

출력 공통 : DEFGHIJKLMNOPQRSTUVWXDYZ </code></pre>
<h4 id="3-2-x번째부터-x번째까지">3-2. X번째부터 X번째까지</h4>
<pre><code class="language-js">console.log(&quot;3~:&quot; + string.slice(3,5));
출력 : DE 
해설 : 3번째부터 5 미만 번째

* slice 는 배열도 자를 수 있음
let arr = [1,2,3,4,5]
console.log(arr.slice(2,4)
출력 : 3,4 
해설 : 배열.slice(behin, end) 일 시, end 의 값은 잘라낼 배열에 포함되지 않는다. 



console.log(&quot;3~:&quot; + string.substring(3,5));
출력 : DE 
해설 : 3번째부터 5 미만 번째

console.log(&quot;3~:&quot; + string.substr(3,5));
출력 : DEFGH 
해설 : 3번째부터 5개</code></pre>
<br>

<h4 id="4-특정-문자를-기준으로-문자열-자르기">4. 특정 문자를 기준으로 문자열 자르기</h4>
<ul>
<li>문자 자른 후에 배열 방식으로 저장<pre><code class="language-js">console.log(string.split(&quot;D&quot;));
출력:     0: &quot;ABC&quot;
      1: &quot;EFGHIJKLMNOPQRSTUVWX&quot;
      2: &quot;YZ&quot;
해설 : ABC &quot;D&quot; EFGHIJKLMNOPQRSTUVWX &quot;D&quot; YZ
      &quot;D&quot; 를 기준으로 문자열을 자른 후에 배열 방식으로 저장한다.
       따라서 해당 배열의 length 는 3


</code></pre>
</li>
</ul>
<p>console.log(string.split(&quot;D&quot;)[0]);
출력 : 0: &quot;ABC&quot;</p>
<p>console.log(string.split(&quot;D&quot;)[1]);
출력 : 1: &quot;EFGHIJKLMNOPQRSTUVWX&quot;</p>
<p>console.log(string.split(&quot;D&quot;)[2]);
출력 : 2: &quot;YZ&quot;</p>
<p>let tmp = string.split(&quot;D&quot;);
console.log(tmp);
출력 : [&#39;ABC&#39;, &#39;EFGHIJKLMNOPQRSTUVWX&#39;, &#39;YZ&#39;]</p>
<pre><code>
&lt;br&gt;

#### 5. 문자열 바꾸기(치환) replace
```js
console.log(string);
출력 : ABCDEFGHIJKLMNOPQRSTUVWXDYZ

consloe.log(string.replace(&quot;D&quot;,&quot;가나다&quot;));
출력 : ABC가나다EFGHIJKLMNOPQRSTUVWXDYZ
해설 : 처음 나오는(?) &quot;D&quot; 를 &quot;가나다&quot; 로 치환한다. 

consloe.log(string.replaceAll(&quot;D&quot;,&quot;가나다&quot;));
출력 : ABC가나다EFGHIJKLMNOPQRSTUVWX가나다YZ
해설 : 모든 &quot;D&quot; 를 &quot;가나다&quot; 로 치환한다. </code></pre><br>

<h4 id="6-전체-문자열에서-특정문자열-있는-지-없는-지만-찾기">6. 전체 문자열에서 특정문자(열) (있는 지 없는 지만) 찾기</h4>
<ul>
<li>match - (&quot;전체문자열&quot;).match(&quot;찾으려는 문자열&quot;)</li>
</ul>
<pre><code class="language-js">let sp = [&quot;android&quot;,&quot;iphone&quot;,&quot;ipad&quot;];
let nu = navigator.userAgent;

document.write(nu)
출력 :  // Mozilla/5.0 (Windows NT 10.0; Win64; x64) 이하생략

document.write(nu.toLocaleLowerCase())
출력 : //mozilla/5.0 (windows nt 10.0; win64; x64) 이하생략
해설 : toLocaleLowerCase - 소문자로 전환


for(let i=0; i&lt;sp.length; i++) {
     console.log(navigator.userAgent.toLocaleLowerCase().match(sp[i]))
        if(navigator.userAgent.toLocaleLowerCase().match(sp[i])) {
            console.log(i + &quot;:&quot;+ sp[i])
            location.replace(&quot;https://m.naver.com&quot;)
        }
    }

해설 : sp 라는 배열의 수 미만까지 i 를 1씩 더해가며 반복해라. i는 0 이므로 3번 (0,1,2) 반복할 것 
조건 : 배열[(sp) i 번째 방에 있는 데이터가 &#39; nu &#39; (navigator.userAgent) 안에 있는 지 없는 지 찾을 것 
출력 : null (없음)


console.log(&quot;여기: &quot; + string.match(&quot;DE&quot;))
출력 :  여기 DE
해설 : string 이라는 문자열 : ABC &quot;DE&quot; FGHIJKLMNOPQRSTUVWXDYZ 안에 &quot;DE&quot; 가 있음</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[170. 함수(콜백함수)]]></title>
            <link>https://velog.io/@ysh_dvp/170.-%ED%95%A8%EC%88%98%EC%BD%9C%EB%B0%B1%ED%95%A8%EC%88%98</link>
            <guid>https://velog.io/@ysh_dvp/170.-%ED%95%A8%EC%88%98%EC%BD%9C%EB%B0%B1%ED%95%A8%EC%88%98</guid>
            <pubDate>Mon, 04 Sep 2023 23:39:30 GMT</pubDate>
            <description><![CDATA[<h3 id="콜백함수">콜백함수</h3>
<ul>
<li>익명함수로 만들기</li>
<li>함수에서 함수를 &#39;콜&#39; 한다.</li>
<li>함수를 부르는 곳에서는 선언적함수를 보낼 수 없어서 무조건 익명함수를 사용해야 한다.</li>
</ul>
<pre><code class="language-js">let aa = function() {
  console.log(&quot;aa&quot;);
}

let bb = function() { 
  console.log(&quot;bb&quot;);
}

tmp(&quot;여기&quot;, aa, bb);

function tmp(txt, func_a, func_b){
  if(txt == &quot;여기&quot;){
    func_a(); // ★ 콜백
  }
  else{
    func_b(); // ★ 콜백
  }
}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[169. return]]></title>
            <link>https://velog.io/@ysh_dvp/169.-return</link>
            <guid>https://velog.io/@ysh_dvp/169.-return</guid>
            <pubDate>Mon, 04 Sep 2023 12:36:35 GMT</pubDate>
            <description><![CDATA[<h2 id="return">return</h2>
<ul>
<li>결과값을 해당 함수를 부를 자리에 돌려보냄</li>
</ul>
<pre><code class="language-js">function add(num1, num2){
  return(num1 + num2)
}

let name = prompt(&quot;이름&quot;);
let result = 100;

console.log(name + &quot;님의 값은&quot; + add(1,2) * result);

해설
return(num1 + num2); 에서 계산된 300 ((1+2)* 100) 을 함수를 부른 add(1,2)의 자리에 돌려보낸다.</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[168. 함수]]></title>
            <link>https://velog.io/@ysh_dvp/168.-%ED%95%A8%EC%88%98</link>
            <guid>https://velog.io/@ysh_dvp/168.-%ED%95%A8%EC%88%98</guid>
            <pubDate>Mon, 04 Sep 2023 12:12:01 GMT</pubDate>
            <description><![CDATA[<h3 id="함수">함수</h3>
<ul>
<li>같은 작업을 필요할 때마다 불러서 한번 사용
(값을 변경하면서 같은 작업을 한다 - 매개변수 이용)</li>
<li>같은 이름의 함수를 만들면 마지막 것만 동작한다. 
(같은 이름의 함수 안에 매개변수 개수가 다르더라도 상관없이 마지막에 선언된 함수만 동작하므로 유의할 것)</li>
</ul>
<h3 id="함수명-생성-규칙-변수명-생성-규칙과-동일">함수명 생성 규칙 (=변수명 생성 규칙과 동일)</h3>
<ol>
<li>첫 번째 글자는 영문, $, _ 만 사용 가능하다.</li>
<li>같은 이름의 함수가 있으면 안 된다.</li>
<li>대소문자 구분 필수</li>
<li>띄어쓰기 하지 말 것</li>
</ol>
<h3 id="함수-종류">함수 종류</h3>
<ol>
<li>선언적 함수 : 함수명이 있는 함수 <pre><code class="language-js">function 함수명() {}</code></pre>
<pre><code class="language-js">function add(number, tt){
console.log(number * tt)
}
</code></pre>
</li>
</ol>
<p>let num = 10;
let tmp = 100;</p>
<p>add(num, tmp);
출력값 : 1000 ( 10 * 1000 )</p>
<pre><code>

&lt;br&gt;

2. 익명 함수 : 함수명이 없는 함수
```js
변수에 담아서 사용한다.
let 변수 = function() {}

변수(); &lt;- 변수에 담은 이후에만 익명함수 사용이 가능하다.</code></pre><pre><code class="language-js">let ff = function() {
  console.log(&quot;익명함수&quot;);
}
ff();
출력값 : &quot;익명함수&quot;</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[161. 반복문_중첩]]></title>
            <link>https://velog.io/@ysh_dvp/161.-%EB%B0%98%EB%B3%B5%EB%AC%B8%EC%A4%91%EC%B2%A9</link>
            <guid>https://velog.io/@ysh_dvp/161.-%EB%B0%98%EB%B3%B5%EB%AC%B8%EC%A4%91%EC%B2%A9</guid>
            <pubDate>Sun, 03 Sep 2023 07:25:56 GMT</pubDate>
            <description><![CDATA[<h3 id="중첩">중첩</h3>
<ul>
<li>반복문 안에 반복문</li>
</ul>
<pre><code class="language-js">
let count = 1;
for(let i=0; i&lt;3, i++){
  for(let j=0; j&lt;3; j++){

    document.write(count++ +&quot;-&gt; i:&quot;+i+&quot;, j:&quot;+j+&quot;&lt;br&gt;&quot;);
    document.write(&quot;------------&lt;br&gt;&quot;);

-출력-
    1-&gt; i:0, j:0
    2-&gt; i:0, j:1
    3-&gt; i:0, j:2
    -------------
    4-&gt; i:1, j:0
    5-&gt; i:1, j:1
    6-&gt; i:1, j:2
    -------------
    7-&gt; i:2, j:0
    8-&gt; i:2, j:1
    9-&gt; i:2, j:2      </code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[159. do while]]></title>
            <link>https://velog.io/@ysh_dvp/159.-do-while</link>
            <guid>https://velog.io/@ysh_dvp/159.-do-while</guid>
            <pubDate>Sun, 03 Sep 2023 06:49:41 GMT</pubDate>
            <description><![CDATA[<h3 id="반복문">반복문</h3>
<ul>
<li>같은 작업을 같은 자리에서 반복하는 것 (loop)</li>
</ul>
<h4 id="반복문의-종류">반복문의 종류</h4>
<h4 id="for--몇-바퀴-돌려야-할-지-알-때-주로-사용한다">for : 몇 바퀴 돌려야 할 지 알 때 주로 사용한다.</h4>
<h4 id="while--몇-바퀴-돌려야-할-지-모를-때-주로-사용한다">while : 몇 바퀴 돌려야 할 지 모를 때 주로 사용한다.</h4>
<h4 id="do-while--최소-한번은-돌릴-때-사용한다">do while : 최소 한번은 돌릴 때 사용한다.</h4>
<br>

<pre><code class="language-js">아래 while 문을 do while 문으로 바꿀 것

let i = 0;
while(i &gt; 10){
  console.log(i)
}

let cal = 0;
let input = 0;

do{
  input = +prompt(&quot;숫자 입력&quot;);

  if(input += 0){
          cal += input;
    }
} while(input &gt; 0)

  console.log(cal);</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[158. while 연습]]></title>
            <link>https://velog.io/@ysh_dvp/158.-while-%EC%97%B0%EC%8A%B5</link>
            <guid>https://velog.io/@ysh_dvp/158.-while-%EC%97%B0%EC%8A%B5</guid>
            <pubDate>Sun, 03 Sep 2023 06:03:12 GMT</pubDate>
            <description><![CDATA[<pre><code>조건
1. 숫자 계속 입력하다가 (몇 번 넣을 지 모름)
2. 0을 입력하면 현재까지 넣은 수의 합계를 출력한다.

- 순서 - 
1. 숫자 입력받기
2. 숫자로 변환
3. 변수에 저장
4. 저장된 값이 0인지 아닌 지 판별
5-1. 0이면 total 출력
5-2. 0 아니면 다시 1번부터 시작</code></pre><pre><code class="language-js">let tot = 0;
let chk = true;

while(chk == true){
  let num = +prompt(&quot;숫자 입력);    

    if(num &gt; 0){
        tot += num;
      }
      else if(num == 0){
      chk = false;
      console.log(tot);
    }</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[157. 반복문(while)]]></title>
            <link>https://velog.io/@ysh_dvp/157.-%EB%B0%98%EB%B3%B5%EB%AC%B8while</link>
            <guid>https://velog.io/@ysh_dvp/157.-%EB%B0%98%EB%B3%B5%EB%AC%B8while</guid>
            <pubDate>Sun, 03 Sep 2023 05:44:18 GMT</pubDate>
            <description><![CDATA[<h3 id="반복문">반복문</h3>
<ul>
<li>같은 작업을 같은 자리에서 반복하는 것 (loop)</li>
</ul>
<h4 id="반복문의-종류">반복문의 종류</h4>
<h4 id="for--몇-바퀴-돌려야-할-지-알-때-주로-사용한다">for : 몇 바퀴 돌려야 할 지 알 때 주로 사용한다.</h4>
<h4 id="while--몇-바퀴-돌려야-할-지-모를-때-주로-사용한다">while : 몇 바퀴 돌려야 할 지 모를 때 주로 사용한다.</h4>
<h4 id="do-while--최소-한번은-돌릴-때-사용한다">do while : 최소 한번은 돌릴 때 사용한다.</h4>
<br>

<h2 id="while-문">while 문</h2>
<ul>
<li>초기, 조건, 증감이 분리되어 구성된다.</li>
</ul>
<pre><code class="language-js">초기식;
while(조건식;){
    증감조건;
}


아래 for문을 while 문으로 바꿀 경우

for(let i =0; i &lt; 10; i++){
      console.log(i);
}

let i = 0
while(i &lt; 10){
  console.log(i);

  i++
}</code></pre>
]]></description>
        </item>
    </channel>
</rss>