<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>나의 IT Note</title>
    <link>https://ak-coding.tistory.com/</link>
    <description>나의 자바스크립트 정리함, 공부하며 끄적끄적</description>
    <language>ko</language>
    <pubDate>Sat, 16 May 2026 18:01:14 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>MaCoder</managingEditor>
    <image>
      <title>나의 IT Note</title>
      <url>https://tistory1.daumcdn.net/tistory/4823763/attach/01159a3c803c4f21941bf93b2c07ca76</url>
      <link>https://ak-coding.tistory.com</link>
    </image>
    <item>
      <title>JavaScript] 개인정보 마스킹(이름, 전화번호 등등 숨기기)</title>
      <link>https://ak-coding.tistory.com/42</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;개인정보 마스킹&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보안이 중요시 되기 때문에 이름, 계좌번호, 전화번호 등등의 개인정보에 마스킹은 필수가 되어가고 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;성명 마스킹&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성명의 맨 앞과 맨 뒤 1자리씩 제외하고 나머지는 *로 치환된다.&lt;/li&gt;
&lt;li&gt;이름이 외자인 경우에 성은 노출이 되고 이름은 *로 치환된다.&lt;/li&gt;
&lt;li&gt;성이 2자인 경우에는 성과 이름 구분없이 성명의 맨 앞과 맨 뒤를 제외한 나머지가 *로 치환된다.&lt;br /&gt;예시) 선우길동 &amp;rarr; 선**동&lt;/li&gt;
&lt;li&gt;성만 입력 또는 이름이 외자인데 이름만 입력하여 이름값이 1자리수라면 해당 이름이 그대로 노출된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function maskName(name) {
    if (name.length === 1) {
        return name;
    } else if (name.length === 2) {
        return name.slice(0, 1) + '*';
    } else {
        return name.slice(0, 1) + '*'.repeat(name.length - 2) + name.slice(-1)
    }
}

maskName('홍') // 홍
maskName('홍길') // 홍*
maskName('홍길동') // 홍*동
maskName('선우길동') // 선**동&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전화번호 마스킹&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전화번호는 11자리의 숫자로만 존재해야 한다.&lt;/li&gt;
&lt;li&gt;가운데 4자리를 *로 치환한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function maskCellPhone(phoneNumber) {
    // 휴대폰 번호가 11자리인지 확인
    if (phoneNumber.length !== 11) {
        console.error(&quot;휴대폰 번호는 11자리여야 합니다.&quot;);
        return phoneNumber;
    }

    // 가운데 4자리를 '*'로 대체
    var maskedNumber = phoneNumber.substring(0, 3) + '****' + phoneNumber.substring(7);
    return maskedNumber;
}

maskCellPhone('01012345678') // 010****5678
// 전화번호에 하이픈이 있는경우 아래 함수를 이용하여 하이픈 제거 후 마스킹 적용
maskCellPhone(convertToNumer('010-1234-5678')) // 010****5678&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size20&quot;&gt;전화번호 하이픈 제거&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 전화번호에 하이픈('-')이 있다면 아래 함수를 통해 하이픈을 제거하여 사용 할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function convertToNumer(phoneNumber) {
    // '-' 제거
    var numericNumber = phoneNumber.replace(/-/g, '');
    return numericNumber;
}

convertToNumer('010-1234-5678') // 01012345678&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;계좌번호 마스킹&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;계좌번호 앞 3자리와 뒤 3자리를 제외한 나머지 숫자를 '*'로 치환된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function maskAccountNumber(accountNumber) {
    const maskedNumber = accountNumber.slice(0, 3) + '*'.repeat(accountNumber.length - 6) + accountNumber.slice(-3);
    return maskedNumber;
}
maskAccountNumber('234567040975542') // 234*********542&lt;/code&gt;&lt;/pre&gt;</description>
      <category>JavaScript</category>
      <category>개인정보</category>
      <category>마스킹</category>
      <category>별표시</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/42</guid>
      <comments>https://ak-coding.tistory.com/42#entry42comment</comments>
      <pubDate>Thu, 7 Mar 2024 15:35:59 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] 숫자 3자리(천단위)마다 콤마(,) 추가(정규식, toLocaleString)</title>
      <link>https://ak-coding.tistory.com/41</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;숫자 3자리마다 콤마(,) 찍기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자 3자리마다(천단위) 콤마(,)를 찍는 2가지 방법&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정규식(Regular Expression) 사용&lt;/h3&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var number = 100000;
var number2 = 100000.123;
function addCommas(amount) {
    return amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, &quot;,&quot;);
}
console.log(addCommas(number)) //100,000
console.log(addCommas(number2)) //100,000.123&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;toLocaleString() 함수 사용&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;number.toLocaleString(locales, options)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;toLocaleString() 함수는 숫자를 로컬의 language format에 맞는 문자열로 변경해 줍니다.&lt;br /&gt;매개변수를 전달하지 않으면 Default locale이 사용됩니다.&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var number = 100000;
var number2 = 100000.123456;
console.log(number.toLocaleString()); //100,000
console.log(number2.toLocaleString()); //100,000.123&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;toLocaleString() 함수를 통해서 나온 결과는 소수점 3자리까지만 표현하기에 변수 number2의 소수점이 6자리인데 3자리로 출력이 되는걸 확인하실 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var option = {
    maximumFractionDigits: 6 // 소수점을 6자리까지 표시
};
console.log(number2.toLocaleString('ko-KR', option)); //100,000.123456&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두번째 매개변수인 option 객체 안에는 maximumFractionDigits 값을 변경하여 소수점 자리수를 지정할 수 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;사용자 PC환경의 locale 확인 방법&lt;/h4&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;console.log(navigator.language) // 'ko-KR'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script&gt;
                    // 숫자 3자리마다(천단위) 콤마(,)를 찍는 2가지 방법
                    /* var number = 100000;
                    var number2 = 100000.123;
                    function addCommas(amount) {
                        return amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, &quot;,&quot;);
                    }
                    console.log(addCommas(number)) //1,234,567
                    console.log(addCommas(number2)) //1,234,567.123 */

                    var number = 100000;
                    var number2 = 100000.123456;
                    var option = {
                        maximumFractionDigits: 6
                    };
                    console.log(number.toLocaleString()); //100,000
                    console.log(number2.toLocaleString()); //100,000
                    console.log(number2.toLocaleString('ko-KR', option)); //100,000.123
                &lt;/script&gt;
&lt;/p&gt;</description>
      <category>JavaScript</category>
      <category>세자리 콤마</category>
      <category>천단위</category>
      <category>천단위 나누기</category>
      <category>콤마</category>
      <category>콤마 추가</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/41</guid>
      <comments>https://ak-coding.tistory.com/41#entry41comment</comments>
      <pubDate>Tue, 27 Feb 2024 17:35:56 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] 카운트 증가 / 숫자 증가 시키기(requestAnimationFrame)</title>
      <link>https://ak-coding.tistory.com/40</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;카운트 증가 / 숫자 증가&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;requestAnimationFrame을 사용하여 카운트를 증가시키는 스크립트로 duration을 통해 애니메이션의 시간을 조절할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;counter&quot; data-count=&quot;125000000&quot;&amp;gt;0&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 모든 counter 요소를 가져옵니다.
var counterElements = document.querySelectorAll('.counter');

// 각각의 counter 요소에 대해 애니메이션을 적용합니다.
counterElements.forEach(function(counterElement) {
    var countLimit = parseInt(counterElement.getAttribute('data-count'), 10);
    var duration = 1000; // 애니메이션 시간 (ms)
    var start = null;

    function step(timestamp) {
        if (!start) start = timestamp;
        var progress = timestamp - start;
        var percentage = Math.min(progress / duration, 1); // 진행률은 최대 1까지

        // data-count에 따라 최종 값 계산
        var currentValue = Math.floor(countLimit * percentage).toLocaleString(); // 쉼표 추가
        counterElement.textContent = currentValue;

        // 애니메이션 종료 조건
        if (progress &amp;lt; duration) {
            requestAnimationFrame(step);
        }
    }

    // 애니메이션 시작
    requestAnimationFrame(step);
});&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과물&lt;/h4&gt;
&lt;div class=&quot;sample&quot;&gt;
&lt;div class=&quot;counter&quot; data-count=&quot;125000000&quot;&gt;0&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script&gt;
                    // 모든 counter 요소를 가져옵니다.
                    var counterElements = document.querySelectorAll('.counter');

                    // 각각의 counter 요소에 대해 애니메이션을 적용합니다.
                    counterElements.forEach(function(counterElement) {
                        var countLimit = parseInt(counterElement.getAttribute('data-count'), 10);
                        var duration = 1000; // 애니메이션 기간 (ms)
                        var start = null;

                        function step(timestamp) {
                            if (!start) start = timestamp;
                            var progress = timestamp - start;
                            var percentage = Math.min(progress / duration, 1); // 진행률은 최대 1까지

                            // data-count에 따라 최종 값 계산
                            var currentValue = Math.floor(countLimit * percentage).toLocaleString(); // 쉼표 추가
                            counterElement.textContent = currentValue;

                            // 애니메이션 종료 조건
                            if (progress &lt; duration) {
                                requestAnimationFrame(step);
                            }
                        }

                        // 애니메이션 시작
                        requestAnimationFrame(step);
                    });
                &lt;/script&gt;
&lt;/p&gt;</description>
      <category>JavaScript</category>
      <category>requestAnimationFrame</category>
      <category>숫자 증가</category>
      <category>카운트 증가</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/40</guid>
      <comments>https://ak-coding.tistory.com/40#entry40comment</comments>
      <pubDate>Tue, 27 Feb 2024 09:39:42 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] 디지털 시계 구현하기</title>
      <link>https://ak-coding.tistory.com/39</link>
      <description>&lt;div class=&quot;tt_article_useless_p_margin contents_style&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;디지털 시계 구현&lt;/h2&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div id=&quot;clock&quot;&amp;gt;Loading...&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;24시간으로 구현&lt;/h3&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function updateClock() {
    var now = new Date();
    var hours = now.getHours().toString().padStart(2, '0');
    var minutes = now.getMinutes().toString().padStart(2, '0');
    var seconds = now.getSeconds().toString().padStart(2, '0');

    var timeString = `${hours}:${minutes}:${seconds}`;
    document.getElementById('clock').textContent = timeString;
}

// 매 초마다 시계 업데이트
setInterval(updateClock, 1000);

// 페이지 로드 시에도 시계 업데이트
updateClock();&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과물&lt;/h4&gt;
&lt;div class=&quot;sample&quot;&gt;
&lt;div id=&quot;clockSample&quot;&gt;Loading...&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AM/PM(12시간)으로 구현&lt;/h3&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function updateClock() {
    const now = new Date();
    const year = now.getFullYear();
    const month = (now.getMonth() + 1).toString().padStart(2, '0');
    const day = now.getDate().toString().padStart(2, '0');
    const hours = now.getHours();
    const minutes = now.getMinutes().toString().padStart(2, '0');
    const seconds = now.getSeconds().toString().padStart(2, '0');
    
    const dateString = `${year}-${month}-${day}`;
    const timeString = `${hours}:${minutes}:${seconds}`;
    const fullString = `${dateString} ${timeString}`;
    document.getElementById('clock').textContent = fullString;
}

// 매 초마다 시계 업데이트
setInterval(updateClock, 1000);

// 페이지 로드 시에도 시계 업데이트
updateClock();&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과물&lt;/h4&gt;
&lt;div class=&quot;sample&quot;&gt;
&lt;div id=&quot;clockSample2&quot;&gt;Loading...&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;년도 + 24시로 구현&lt;/h3&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function updateClock() {
    const now = new Date();
    const year = now.getFullYear();
    const month = (now.getMonth() + 1).toString().padStart(2, '0');
    const day = now.getDate().toString().padStart(2, '0');
    const hours = now.getHours();
    const minutes = now.getMinutes().toString().padStart(2, '0');
    const seconds = now.getSeconds().toString().padStart(2, '0');
    
    const dateString = `${year}-${month}-${day}`;
    const timeString = `${hours}:${minutes}:${seconds}`;
    const fullString = `${dateString} ${timeString}`;
    document.getElementById('clock').textContent = fullString;
}

// 매 초마다 시계 업데이트
setInterval(updateClock, 1000);

// 페이지 로드 시에도 시계 업데이트
updateClock();&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과물&lt;/h4&gt;
&lt;div class=&quot;sample&quot;&gt;
&lt;div id=&quot;clockSample3&quot;&gt;Loading...&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;년도 + AM PM으 구현&lt;/h3&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function updateClock() {
    const now = new Date();
    const daysOfWeek = [&quot;일&quot;, &quot;월&quot;, &quot;화&quot;, &quot;수&quot;, &quot;목&quot;, &quot;금&quot;, &quot;토&quot;];
    const dayOfWeek = daysOfWeek[now.getDay()];
    const year = now.getFullYear();
    const month = (now.getMonth() + 1).toString().padStart(2, '0');
    const day = now.getDate().toString().padStart(2, '0');
    const hours = now.getHours();
    const minutes = now.getMinutes().toString().padStart(2, '0');
    const seconds = now.getSeconds().toString().padStart(2, '0');
    
    let ampm = 'AM';
    let displayHours = hours;
    
    if (hours &amp;gt;= 12) {
        ampm = 'PM';
        displayHours = hours % 12;
        if (displayHours === 0) {
        displayHours = 12;
        }
    }
    
    const timeString = `${year}-${month}-${day} (${dayOfWeek}) ${displayHours}:${minutes}:${seconds} ${ampm}`;
    document.getElementById('clock').textContent = timeString;
}

// 매 초마다 시계 업데이트
setInterval(updateClock, 1000);

// 페이지 로드 시에도 시계 업데이트
updateClock();&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과물&lt;/h4&gt;
&lt;div class=&quot;sample&quot;&gt;
&lt;div id=&quot;clockSample4&quot;&gt;Loading...&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script&gt;
                function updateClock() {
                  var now = new Date();
                  var hours = now.getHours().toString().padStart(2, '0');
                  var minutes = now.getMinutes().toString().padStart(2, '0');
                  var seconds = now.getSeconds().toString().padStart(2, '0');
                
                  var timeString = `${hours}:${minutes}:${seconds}`;
                  document.getElementById('clockSample').textContent = timeString;
                }
                
                // 매 초마다 시계 업데이트
                setInterval(updateClock, 1000);
                
                // 페이지 로드 시에도 시계 업데이트
                updateClock();
                
                
                
                function updateClock2() {
                  var now = new Date();
                  var hours = now.getHours();
                  var minutes = now.getMinutes().toString().padStart(2, '0');
                  var seconds = now.getSeconds().toString().padStart(2, '0');
                
                  let ampm = 'AM';
                  let displayHours = hours;
                
                  if (hours &gt;= 12) {
                    ampm = 'PM';
                    displayHours = hours % 12;
                    if (displayHours === 0) {
                      displayHours = 12;
                    }
                  }
                
                  var timeString = `${displayHours}:${minutes}:${seconds} ${ampm}`;
                  document.getElementById('clockSample2').textContent = timeString;
                }
                
                // 매 초마다 시계 업데이트
                setInterval(updateClock2, 1000);
                
                // 페이지 로드 시에도 시계 업데이트
                updateClock2();
                
                
                
                
                function updateClock3() {
                  var now = new Date();
                  var year = now.getFullYear();
                  var month = (now.getMonth() + 1).toString().padStart(2, '0');
                  var day = now.getDate().toString().padStart(2, '0');
                  var hours = now.getHours();
                  var minutes = now.getMinutes().toString().padStart(2, '0');
                  var seconds = now.getSeconds().toString().padStart(2, '0');
                
                  var dateString = `${year}-${month}-${day}`;
                  var timeString = `${hours}:${minutes}:${seconds}`;
                  var fullString = `${dateString} ${timeString}`;
                  document.getElementById('clockSample3').textContent = fullString;
                }
                
                // 매 초마다 시계 업데이트
                setInterval(updateClock3, 1000);
                
                // 페이지 로드 시에도 시계 업데이트
                updateClock3();
                
                
                
                function updateClock4() {
                  var now = new Date();
                  var daysOfWeek = [&quot;일&quot;, &quot;월&quot;, &quot;화&quot;, &quot;수&quot;, &quot;목&quot;, &quot;금&quot;, &quot;토&quot;];
                  var dayOfWeek = daysOfWeek[now.getDay()];
                  var year = now.getFullYear();
                  var month = (now.getMonth() + 1).toString().padStart(2, '0');
                  var day = now.getDate().toString().padStart(2, '0');
                  var hours = now.getHours();
                  var minutes = now.getMinutes().toString().padStart(2, '0');
                  var seconds = now.getSeconds().toString().padStart(2, '0');
                
                  let ampm = 'AM';
                  let displayHours = hours;
                
                  if (hours &gt;= 12) {
                    ampm = 'PM';
                    displayHours = hours % 12;
                    if (displayHours === 0) {
                      displayHours = 12;
                    }
                  }
                
                  var timeString = `${year}-${month}-${day} (${dayOfWeek}) ${displayHours}:${minutes}:${seconds} ${ampm}`;
                  document.getElementById('clockSample4').textContent = timeString;
                }
                
                // 매 초마다 시계 업데이트
                setInterval(updateClock4, 1000);
                
                // 페이지 로드 시에도 시계 업데이트
                updateClock4();
            &lt;/script&gt;
&lt;/p&gt;</description>
      <category>JavaScript</category>
      <category>디지털 시계</category>
      <category>스크립트 시계</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/39</guid>
      <comments>https://ak-coding.tistory.com/39#entry39comment</comments>
      <pubDate>Tue, 23 Jan 2024 10:54:15 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] 페이지 자동으로 이동하기[location.href / location.replace()]</title>
      <link>https://ak-coding.tistory.com/38</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;페이지 자동으로 이동하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;현재 페이지에서 다른 페이지로 별도 액션없이 자동으로 이동시키는 방법&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;메타태그&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;대기시간은 숫자로 입력을 해야 하며 0이면 바로 이동하며, 5를 입력 시 5초후 이동합니다.&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;meta http-equiv=&quot;refresh&quot; content=&quot;대기시간; url=http://이동할 주소&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;스크립트&lt;/h3&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// location.href 사용
location.href=&quot;http://이동할 주소&quot;;

// location.replace 사용
location.replace('http://이동할 주소');&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;location.href와 replace 차이점&lt;/h4&gt;
&lt;table data-ke-style=&quot;style1&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;colgroup&gt; &lt;col style=&quot;width: 20%;&quot; /&gt; &lt;col style=&quot;width: 40%;&quot; /&gt; &lt;col style=&quot;width: 40%;&quot; /&gt; &lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope=&quot;col&quot;&gt;&amp;nbsp;&lt;/th&gt;
&lt;th scope=&quot;col&quot;&gt;location.href&lt;/th&gt;
&lt;th scope=&quot;col&quot;&gt;location.replace&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;기능&lt;/th&gt;
&lt;td&gt;새로운 페이지로 이동&lt;/td&gt;
&lt;td&gt;기존 페이지를 새로운 페이지로 변경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;뒤로가기&lt;/th&gt;
&lt;td&gt;가능&lt;/td&gt;
&lt;td&gt;불가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;형태&lt;/th&gt;
&lt;td&gt;속성&lt;/td&gt;
&lt;td&gt;메서드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;히스토리&lt;/th&gt;
&lt;td&gt;저장됨&lt;/td&gt;
&lt;td&gt;저장안됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;용도&lt;/th&gt;
&lt;td&gt;일반적인 URL이동&lt;/td&gt;
&lt;td&gt;뒤로가기가 안되므로 보안이 필요한 페이지나 히스토리 기록이 남지 않아야 하는 경우&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>JavaScript</category>
      <category>href</category>
      <category>Location</category>
      <category>Replace</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/38</guid>
      <comments>https://ak-coding.tistory.com/38#entry38comment</comments>
      <pubDate>Thu, 18 Jan 2024 16:08:31 +0900</pubDate>
    </item>
    <item>
      <title>[MAC]맥 단축키 모음(전체화면 스크린샷 캡쳐 바탕화면 보기 닫기)</title>
      <link>https://ak-coding.tistory.com/37</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;스크린샷 캡쳐&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전체화면 캡쳐&lt;/h3&gt;
&lt;div class=&quot;mac-keyboard&quot;&gt;
&lt;div class=&quot;command&quot;&gt;command&lt;/div&gt;
&lt;div class=&quot;plus&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;shift&quot;&gt;shift&lt;/div&gt;
&lt;div class=&quot;plus&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;number4&quot;&gt;3&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;command키와 shift키를 동시에 누른 상태로 숫자 3번 키를 누른다.&lt;/li&gt;
&lt;li&gt;모니터 우측 하단에 생성된 캡쳐 축소판을 클릭하여 편집하거나 자동저장(4~5초)이 될 때까지 기다린다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;일부 화면 캡쳐&lt;/h3&gt;
&lt;div class=&quot;mac-keyboard&quot;&gt;
&lt;div class=&quot;command&quot;&gt;command&lt;/div&gt;
&lt;div class=&quot;plus&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;shift&quot;&gt;shift&lt;/div&gt;
&lt;div class=&quot;plus&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;number4&quot;&gt;4&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;command키와 shift키를 동시에 누른 상태로 숫자 4번키를 누른다.&lt;/li&gt;
&lt;li&gt;십자선을 마우스로 클릭 후 드래그 하여 캡쳐할 영역을 지정 후 축소판을 클릭하여 편집하거나 자동 저장(4~5초)이 될 때까지 기다린다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;윈도우 또는 메뉴 캡쳐&lt;/h3&gt;
&lt;div class=&quot;mac-keyboard&quot;&gt;
&lt;div class=&quot;command&quot;&gt;command&lt;/div&gt;
&lt;div class=&quot;plus&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;shift&quot;&gt;shift&lt;/div&gt;
&lt;div class=&quot;plus&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;number4&quot;&gt;4&lt;/div&gt;
&lt;div class=&quot;plus&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;space&quot;&gt;space&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;캡쳐할 윈도우 또는 메뉴를 화면상에 보이게 해놓는다.&lt;/li&gt;
&lt;li&gt;command키와 shift키를 동시에 누른 상태로 숫자 4번 키를 누르고 space키를 누른다.&lt;/li&gt;
&lt;li&gt;마우스 포인터가 카메라 아이콘으로 변경된다.&lt;/li&gt;
&lt;li&gt;스크린샷을 찍을 윈도우 또는 메뉴를 선택한 후 축소판을 클릭하여 편집하거나 자동 저장(4~5초)이 될 때까지 기다린다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;전체화면 시작 및 종료&lt;/h2&gt;
&lt;div class=&quot;mac-keyboard&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;fn&lt;/div&gt;
&lt;div class=&quot;plus&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;f&quot;&gt;F&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;mac-keyboard&quot;&gt;
&lt;div class=&quot;control&quot;&gt;control&lt;/div&gt;
&lt;div class=&quot;plus&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;command&quot;&gt;command&lt;/div&gt;
&lt;div class=&quot;plus&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;f&quot;&gt;F&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;fn키를 누른 상태로 f 키를 누른다.&lt;/li&gt;
&lt;li&gt;또는 control키와 command키를 누른 상태로 f 키를 누른다.&lt;/li&gt;
&lt;li&gt;전체화면 상태라면 종료가 되고 전체화면이 아니라면 전체화면으로 전환된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;바탕화면 보기&lt;/h2&gt;
&lt;div class=&quot;mac-keyboard&quot;&gt;
&lt;div class=&quot;command&quot;&gt;command&lt;/div&gt;
&lt;div class=&quot;plus&quot;&gt;+&lt;/div&gt;
&lt;div class=&quot;numberf3&quot;&gt;F3&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;command키를 누른 상태로 F3 키를 누른다.&lt;/li&gt;
&lt;li&gt;다시 작업 화면으로 돌아가려면 동일하게 누르면 된다.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>일상</category>
      <category>mac 바탕화면 보기</category>
      <category>mac 전체화면 닫기</category>
      <category>mac 전체화면 보기</category>
      <category>WJ</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/37</guid>
      <comments>https://ak-coding.tistory.com/37#entry37comment</comments>
      <pubDate>Fri, 29 Dec 2023 13:59:33 +0900</pubDate>
    </item>
    <item>
      <title>css 말풍선 그리기</title>
      <link>https://ak-coding.tistory.com/36</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;말풍선 그리기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지를 사용하여 말풍선을 적용할 수 있지만 말풍선의 데이터에 따라 디자인이 깨지지 않으면서 반영이 되어야 하기에 css를 통해 말풍선을 그리는 게 효과적이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;보더 컬러를 수정하여 말풍선 색상을 변경할 수 있다.&lt;/li&gt;
&lt;li&gt;보더 값을 적절하게 변경하면 여러모양의 말풍선 꼭지점을 만들 수 있다.&lt;/li&gt;
&lt;li&gt;position 속성의 top left를 사용하여 말풍선의 꼭지점을 원하는 위치로 옮길 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;말풍선&lt;/h3&gt;
&lt;pre class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.speech-bubble {
    position:relative;
    width:200px;
    padding:20px;
    background-color:#666;
    border-radius:4px;
    color:#fff;
}

.speech-bubble.left:after {
    content:'';
    position:absolute;
    top:50%;
    left:-16px;
    border-right:16px solid #666;
    border-top:10px solid transparent;
    border-bottom:10px solid transparent;
    transform:translateY(-50%);
}

.speech-bubble.right:after {
    content:'';
    position:absolute;
    top:50%;
    right:-16px;
    border-left:16px solid #666;
    border-top:10px solid transparent;
    border-bottom:10px solid transparent;
    transform:translateY(-50%);
}

.speech-bubble.top:after {
    content:'';
    position:absolute;
    top:-8px;
    left:50%;
    border-bottom:8px solid #666;
    border-left:16px solid transparent;
    border-right:16px solid transparent;
    transform:translateX(-50%);
}

.speech-bubble.bottom:after {
    content:'';
    position:absolute;
    left:30px;
    bottom:-8px;
    border-left:16px solid transparent;
    border-right:16px solid transparent;
    border-top:8px solid #666;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과물&lt;/h4&gt;
&lt;div class=&quot;sample page36&quot;&gt;
&lt;div class=&quot;flex flex-column align-center gap40&quot;&gt;
&lt;div class=&quot;speech-bubble left&quot;&gt;왼쪽 말풍선&lt;/div&gt;
&lt;div class=&quot;speech-bubble right&quot;&gt;오른쪽 말풍선&lt;/div&gt;
&lt;div class=&quot;speech-bubble top&quot;&gt;위 말풍선&lt;/div&gt;
&lt;div class=&quot;speech-bubble bottom&quot;&gt;아래 말풍선&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>CSS</category>
      <category>css 말풍선</category>
      <category>말풍선 그리기</category>
      <category>툴팁</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/36</guid>
      <comments>https://ak-coding.tistory.com/36#entry36comment</comments>
      <pubDate>Wed, 20 Dec 2023 13:58:15 +0900</pubDate>
    </item>
    <item>
      <title>css로 삼각형 그리기</title>
      <link>https://ak-coding.tistory.com/35</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;삼각형 그리기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지를 사용하여 삼격형을 적용할 수 있지만 컬러나 모양이 변경되는 경우 이미지를 수정해야 하는 번거로움이 있기 때문에 css를 통해 삼격형을 그리는 게 효과적이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;보더 컬러를 수정하여 삼격형의 색상을 변경할 수 있다.&lt;/li&gt;
&lt;li&gt;보더 값을 적절하게 변경하면 여러모양의 삼각형을 만들 수 있다.&lt;/li&gt;
&lt;li&gt;transform 속성의 rotate를 사용하면 회전 시킬 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정삼각형&lt;/h3&gt;
&lt;pre class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.triangle {
    width: 0px;
    height: 0px;
    border-bottom: calc( 90px * 1.732 ) solid #666666;
    border-left: 90px solid transparent;
    border-right: 90px solid transparent;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과물&lt;/h4&gt;
&lt;div class=&quot;sample page35&quot;&gt;
&lt;div class=&quot;flex flex-column align-center&quot;&gt;
&lt;div class=&quot;triangle&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;직각삼각형&lt;/h3&gt;
&lt;pre class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.triangle {
    width: 0px;
    height: 0px;
    border-bottom: 180px solid #666666;
    border-left: 0px solid transparent;
    border-right: 180px solid transparent;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과물&lt;/h4&gt;
&lt;div class=&quot;sample page35&quot;&gt;
&lt;div class=&quot;flex flex-column align-center&quot;&gt;
&lt;div class=&quot;triangle2&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이등변삼각형&lt;/h3&gt;
&lt;pre class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* 위 */
.triangle {
    width: 0px;
    height: 0px;
    border-bottom: 180px solid #666666;
    border-left: 90px solid transparent;
    border-right: 90px solid transparent;
}

/* 오른쪽 */
.triangle {
    width: 0px;
    height: 0px;
    border-left: 180px solid #666666;
    border-top: 90px solid transparent;
    border-bottom: 90px solid transparent;
}

/* 아래 */
.triangle {
    width: 0px;
    height: 0px;
    border-top: 180px solid #666666;
    border-left: 90px solid transparent;
    border-right: 90px solid transparent;
}

/* 왼쪽 */
.triangle {
    width: 0px;
    height: 0px;
    border-right: 180px solid #666666;
    border-top: 90px solid transparent;
    border-bottom: 90px solid transparent;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과물&lt;/h4&gt;
&lt;div class=&quot;sample page35&quot;&gt;
&lt;div class=&quot;flex flex-column align-center gap20&quot;&gt;
&lt;div class=&quot;triangle3-1&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;triangle3-2&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;triangle3-3&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;triangle3-4&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;변형 삼각형&lt;/h3&gt;
&lt;pre class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.triangle {
    width: 0px;
    height: 0px;
    border-bottom: 180px solid #666666;
    border-left: 240px solid transparent;
    border-right: 90px solid transparent;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과물&lt;/h4&gt;
&lt;div class=&quot;sample page35&quot;&gt;
&lt;div class=&quot;flex flex-column align-center&quot;&gt;
&lt;div class=&quot;triangle4&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;회전&lt;/h3&gt;
&lt;pre class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.triangle {
    width: 0px;
    height: 0px;
    border-bottom: calc( 90px * 1.732 ) solid #666666;
    border-left: 90px solid transparent;
    border-right: 90px solid transparent;
    transform: rotate( 45deg );
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과물&lt;/h4&gt;
&lt;div class=&quot;sample page35&quot; style=&quot;padding-bottom: 84px;&quot;&gt;
&lt;div class=&quot;flex flex-column align-center&quot;&gt;
&lt;div class=&quot;triangle5&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>CSS</category>
      <category>css 도형</category>
      <category>css 삼각형</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/35</guid>
      <comments>https://ak-coding.tistory.com/35#entry35comment</comments>
      <pubDate>Tue, 19 Dec 2023 17:05:20 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] 제이쿼리(jQuery) 다음요소 찾기(next) 자바스크립트로 구현</title>
      <link>https://ak-coding.tistory.com/33</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;다음요소 찾기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript에서 기본적으로 제공하는 nextElementSibling 기능은 단순히 선택된 요소의 다음 요소만 찾아주기에 jQuery와 동일한 기능을 JavaScript로 만들어봤다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;next()&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;jQuery의 next()와 동일한 기능을 JavaScript로 구현&lt;/li&gt;
&lt;li&gt;매개변수 selector가 제공되는 경우에는 다음 요소가 selector와 일치하는 경우에만 반환을 하며 일치하지 않는 경우에는 null 을 반환한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1701415198696&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function next(ele, selector) {
    var nextEl = ele.nextElementSibling;
    if (!selector || (nextEl &amp;amp;&amp;amp; nextEl.matches(selector))) {
        return nextEl;
    }
    return null;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;nextAll()&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;jQuery의 nextAll()와 동일한 기능을 JavaScript로 구현&lt;/li&gt;
&lt;li&gt;다음 요소가 없거나 매개변수 selector와 일치하는 다음 요소를 찾을 수 없는 경우에는 빈 배열을 반환한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1701415208152&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function nextAll(ele, selector) {
    var nextAllElements = [];
    var currentElement = ele.nextElementSibling;
    while (currentElement) {
        if (!selector || currentElement.matches(selector)) {
            nextAllElements.push(currentElement);
        }
        currentElement = currentElement.nextElementSibling;
    }
    return nextAllElements;
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예시&lt;/h3&gt;
&lt;pre id=&quot;code_1701415243160&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
    &amp;lt;li class=&quot;apple&quot;&amp;gt;사과&amp;lt;/li&amp;gt;
    &amp;lt;li class=&quot;banana&quot;&amp;gt;바나나&amp;lt;/li&amp;gt;
    &amp;lt;li class=&quot;pineapple&quot;&amp;gt;파인애플&amp;lt;/li&amp;gt;
    &amp;lt;li class=&quot;strawberry&quot;&amp;gt;딸기&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1701415259272&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var bananaEle = document.querySelector('.banana'); // 바나나
var appleEle = document.querySelector('.sample .apple'); // 사과
var strawberryEle = document.querySelector('.strawberry'); // 딸기

// 바나나의 다음요소
next(bananaEle).style.color = 'red'

// 사과 다음요소가 바나나과 일치하는 경우
next(appleEle, '.banana').style.color = 'red'

// 바나나의 다음요소 모두
var nextAllElement = nextAll(bananaEle);
nextAllElement.forEach(function(item) {
    item.style.color = 'red'
})

// 바나나의 다음요소 중 딸기와 일치하는 경우
var nextAllElement = nextAll(bananaEle, '.strawberry');
nextAllElement.forEach(function(item) {
    item.style.color = 'red'
})&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과물&lt;/h4&gt;
&lt;div class=&quot;sample sample1&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li class=&quot;apple&quot;&gt;사과&lt;/li&gt;
&lt;li class=&quot;banana&quot;&gt;바나나&lt;/li&gt;
&lt;li class=&quot;pineapple&quot;&gt;파인애플&lt;/li&gt;
&lt;li class=&quot;strawberry&quot;&gt;딸기&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;sample-btn&quot;&gt;&lt;button id=&quot;btn-next-1&quot; type=&quot;button&quot;&gt;바나나의 다음요소&lt;/button&gt; &lt;button id=&quot;btn-next-2&quot; type=&quot;button&quot;&gt;사과 다음요소가 바나나과 일치하는 경우&lt;/button&gt; &lt;button id=&quot;btn-nextAll-1&quot; type=&quot;button&quot;&gt;바나나의 다음요소 모두&lt;/button&gt; &lt;button id=&quot;btn-nextAll-2&quot; type=&quot;button&quot;&gt;바나나의 다음요소 중 딸기와 일치하는 경우&lt;/button&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script&gt;
    var bananaEle = document.querySelector('.sample .banana');
    var appleEle = document.querySelector('.sample .apple');
    var strawberryEle = document.querySelector('.sample .strawberry');
    
    var sampleLi = document.querySelectorAll('.sample ul &gt; li');

    // 바나나의 다음요소
    document.getElementById('btn-next-1').addEventListener('click', function() {
        ui.removeAttr(sampleLi, 'style');
        ui.next(bananaEle).style.color = 'red'
    })
    
    // 사과 다음요소가 바나나과 일치하는 경우
    document.getElementById('btn-next-2').addEventListener('click', function() {
        ui.removeAttr(sampleLi, 'style');
        ui.next(appleEle, '.banana').style.color = 'red'
    })

    // 바나나의 다음요소 모두
    document.getElementById('btn-nextAll-1').addEventListener('click', function() {
        ui.removeAttr(sampleLi, 'style');
        var nextAllElement = ui.nextAll(bananaEle);
        nextAllElement.forEach(function(item) {
            item.style.color = 'red'
        })
    })

    // 바나나의 다음요소 중 딸기와 일치하는 경우
    document.getElementById('btn-nextAll-2').addEventListener('click', function() {
        ui.removeAttr(sampleLi, 'style');
        var nextAllElement = ui.nextAll(bananaEle, '.strawberry');
        nextAllElement.forEach(function(item) {
            item.style.color = 'red'
        })
    })
&lt;/script&gt;
&lt;/p&gt;</description>
      <category>JavaScript</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/33</guid>
      <comments>https://ak-coding.tistory.com/33#entry33comment</comments>
      <pubDate>Fri, 1 Dec 2023 10:34:22 +0900</pubDate>
    </item>
    <item>
      <title>VoiceOver 자막 패널 설정하기</title>
      <link>https://ak-coding.tistory.com/32</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;VoiceOver 자막 패널&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iOS 13에서는 VoiceOver의 음성정보를 시각적으로 볼 수 있는 '자막 패널' 이 추가되었다.&lt;br /&gt;자막 패널은 화면의 하단에서 확인이 가능하며 '손쉬운 사용' 에서 설정이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-filename=&quot;voiceover1.png&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;1793&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Km3mM/btsBcazrM27/k3hPknZHRtVLctajyVZUhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKm3mM%2FbtsBcazrM27%2Fk3hPknZHRtVLctajyVZUhK%2Fimg.png&quot; data-filename=&quot;voiceover1.png&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;1793&quot; /&gt;
&lt;figcaption&gt;설정 &amp;rarr; 손쉬운 사용&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;1793&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LLHn1/btsA8ODUeaX/IAfj9YJsbHRKVSPa6sHdek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLLHn1%2FbtsA8ODUeaX%2FIAfj9YJsbHRKVSPa6sHdek%2Fimg.png&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;1793&quot; /&gt;
&lt;figcaption&gt;손쉬운 사용 &amp;rarr; VoiceOver&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-filename=&quot;voiceover3.png&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;1793&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b09OL9/btsBfMxqBTM/BY0vHJqWNI27krU2RkyAIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb09OL9%2FbtsBfMxqBTM%2FBY0vHJqWNI27krU2RkyAIK%2Fimg.png&quot; data-filename=&quot;voiceover3.png&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;1793&quot; /&gt;
&lt;figcaption&gt;VoiceOver &amp;rarr; 하단에 있는 '자막 패널' On&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-filename=&quot;voiceover4.png&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;1793&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKLsn8/btsBbEgkE58/ed5e8wM26Wv2TZv2JrETN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKLsn8%2FbtsBbEgkE58%2Fed5e8wM26Wv2TZv2JrETN1%2Fimg.png&quot; data-filename=&quot;voiceover4.png&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;1793&quot; /&gt;
&lt;figcaption&gt;자막이 하단에 노출&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>일상</category>
      <category>VoiceOver</category>
      <category>보이스오버</category>
      <category>웹접근성</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/32</guid>
      <comments>https://ak-coding.tistory.com/32#entry32comment</comments>
      <pubDate>Thu, 30 Nov 2023 14:42:19 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] 제이쿼리(jQuery) 이전요소 찾기(prev) 자바스크립트로 구현</title>
      <link>https://ak-coding.tistory.com/31</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;이전요소 찾기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript에서 기본적으로 제공하는 previousElementSibling 기능은 단순히 선택된 요소의 이전 요소만 찾아주기에 jQuery와 동일한 기능을 JavaScript로 만들어봤다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;prev()&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;jQuery의 prev()와 동일한 기능을 JavaScript로 구현&lt;/li&gt;
&lt;li&gt;매개변수 selector가 제공되는 경우에는 이전 요소가 selector와 일치하는 경우에만 반환을 하며 일치하지 않는 경우에는 null 을 반환한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1701320990443&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function prev(ele, selector) {
    var prevEle = ele.previousElementSibling;
    if (!selector || (prevEle &amp;amp;&amp;amp; prevEle.matches(selector))) {
        return prevEle;
    }
    return null;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;prevAll()&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;jQuery의 prevAll()와 동일한 기능을 JavaScript로 구현&lt;/li&gt;
&lt;li&gt;이전 요소가 없거나 매개변수 selector와 일치하는 이전 요소를 찾을 수 없는 경우에는 빈 배열을 반환한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1701320978163&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function prevAll(ele, selector) {
    var prevAllEle = [];
    var currentEle = ele.previousElementSibling;
    while (currentEle) {
        if (!selector || currentEle.matches(selector)) {
            prevAllEle.push(currentEle);
        }
        currentEle = currentEle.previousElementSibling;
    }
    return prevAllEle;
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예시&lt;/h3&gt;
&lt;pre id=&quot;code_1701320961605&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
    &amp;lt;li class=&quot;apple&quot;&amp;gt;사과&amp;lt;/li&amp;gt;
    &amp;lt;li class=&quot;banana&quot;&amp;gt;바나나&amp;lt;/li&amp;gt;
    &amp;lt;li class=&quot;pineapple&quot;&amp;gt;파인애플&amp;lt;/li&amp;gt;
    &amp;lt;li class=&quot;strawberry&quot;&amp;gt;딸기&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1701321273122&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var bananaEle = document.querySelector('.banana'); // 바나나
var strawberryEle = document.querySelector('.strawberry'); // 딸기

// 바나나의 이전요소
prev(bananaEle).style.color = 'red'

// 딸기의 이전요소가 파인애플과 일치하는 경우
prev(strawberryEle, '.pineapple').style.color = 'red'

// 딸기의 이전요소 모두
var prevAllEle = prevAll(strawberryEle);
prevAllEle.forEach(function(item) {
    item.style.color = 'red'
})

// 딸기의 이전요소 중 바나나와 일치하는 경우
var prevAllEle = prevAll(strawberryEle, '.banana');
prevAllEle.forEach(function(item) {
    item.style.color = 'red'
})&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과물&lt;/h4&gt;
&lt;div class=&quot;sample sample1&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li class=&quot;apple&quot;&gt;사과&lt;/li&gt;
&lt;li class=&quot;banana&quot;&gt;바나나&lt;/li&gt;
&lt;li class=&quot;pineapple&quot;&gt;파인애플&lt;/li&gt;
&lt;li class=&quot;strawberry&quot;&gt;딸기&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;sample-btn&quot;&gt;&lt;button id=&quot;btn-prev-1&quot; type=&quot;button&quot;&gt;바나나의 이전요소&lt;/button&gt; &lt;button id=&quot;btn-prev-2&quot; type=&quot;button&quot;&gt;딸기의 이전요소가 파인애플과 일치하는 경우&lt;/button&gt; &lt;button id=&quot;btn-prevAll-1&quot; type=&quot;button&quot;&gt;딸기의 이전요소 모두&lt;/button&gt; &lt;button id=&quot;btn-prevAll-2&quot; type=&quot;button&quot;&gt;딸기의 이전요소 중 바나나와 일치하는 경우&lt;/button&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script&gt;
        var bananaEle = document.querySelector('.sample .banana');
        var strawberryEle = document.querySelector('.sample .strawberry');
        
        var sampleLi = document.querySelectorAll('.sample ul &gt; li');

        // 바나나의 이전요소 컬러 변경
        document.getElementById('btn-prev-1').addEventListener('click', function() {
            ui.removeAttr(sampleLi, 'style');
            ui.prev(bananaEle).style.color = 'red'
        })
        
        // 딸기의 이전요소가 파인애플과 일치하는 경우에만 컬러 변경
        document.getElementById('btn-prev-2').addEventListener('click', function() {
            ui.removeAttr(sampleLi, 'style');
            ui.prev(strawberryEle, '.pineapple').style.color = 'red'
        })

        // 딸기의 이전요소 모두 선택하여 컬러 변경
        document.getElementById('btn-prevAll-1').addEventListener('click', function() {
            ui.removeAttr(sampleLi, 'style');
            var prevAllElement = ui.prevAll(strawberryEle);
            prevAllElement.forEach(function(item) {
                item.style.color = 'red'
            })
        })

        // 딸기의 이전요소 중 바나나와 일치하는 경우에만 컬러 변경
        document.getElementById('btn-prevAll-2').addEventListener('click', function() {
            ui.removeAttr(sampleLi, 'style');
            var prevAllElement = ui.prevAll(strawberryEle, '.banana');
            prevAllElement.forEach(function(item) {
                item.style.color = 'red'
            })
        })
    &lt;/script&gt;
&lt;/p&gt;</description>
      <category>JavaScript</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/31</guid>
      <comments>https://ak-coding.tistory.com/31#entry31comment</comments>
      <pubDate>Thu, 30 Nov 2023 14:10:16 +0900</pubDate>
    </item>
    <item>
      <title>[CSS] :not() 가상 클래스(의사 클래스)</title>
      <link>https://ak-coding.tistory.com/24</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;:not()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 selector을 제외하고 스타일을 적용하고 싶은 경우 사용&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CSS&lt;/h3&gt;
&lt;pre id=&quot;code_1628574264374&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.parents p:not(.fisrt) {
  background-color: green;
  color: #fff;
}
.parents span:not(.fourth) {
  background-color: gray;
  color: #fff;
}
.parents .fifth :not(p) {
  font-style: italic; text-decoration: underline;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;p:not(.fisrt)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;p 요소 중에 first 클래스를 가지고 있지 않는 요소 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;span:not(.fourth)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;span 요소 중에 fourth를 가지고 있지 않는 요소 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;.fifth&amp;nbsp;:not(p)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fifth 클래스를 가진 요소의 자식들 중에 p요소를 가지고 있지 않은 요소 선택&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;HTML&lt;/h3&gt;
&lt;pre id=&quot;code_1628574523031&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;parents&quot;&amp;gt;
  &amp;lt;p class=&quot;first&quot;&amp;gt;1. first를 가지고 있는 p요소&amp;lt;/p&amp;gt;
  &amp;lt;span class=&quot;second&quot;&amp;gt;2. fourth를 가지고 있지 않은 span요소&amp;lt;/span&amp;gt;
  &amp;lt;p class=&quot;third&quot;&amp;gt;3. first를 가지고 있지 않은 p요소&amp;lt;/p&amp;gt;
  &amp;lt;span class=&quot;fourth&quot;&amp;gt;4. fourth를 가지고 있는 span요소&amp;lt;/span&amp;gt;
  &amp;lt;div class=&quot;fifth&quot;&amp;gt;
    &amp;lt;p&amp;gt;5-1. first를 가지고 있지 않은 p요소/fifth의 자식요소 중 p요소&amp;lt;/p&amp;gt;
    &amp;lt;div&amp;gt;5-2. fifth의 자식요소 중 p요소를 가지고 있지 않은 div요소&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결과&lt;/h3&gt;
&lt;div class=&quot;jk line mg0 not&quot;&gt;
&lt;div class=&quot;parents&quot;&gt;
&lt;div class=&quot;parents&quot;&gt;
&lt;p class=&quot;first&quot; data-ke-size=&quot;size16&quot;&gt;1. first를 가지고 있는 p요소&lt;/p&gt;
&lt;span class=&quot;second&quot;&gt;2. fourth를 가지고 있지 않은 span요소&lt;/span&gt;
&lt;p class=&quot;third&quot; data-ke-size=&quot;size16&quot;&gt;3. first를 가지고 있지 않은 p요소&lt;/p&gt;
&lt;span class=&quot;fourth&quot;&gt;4. fourth를 가지고 있는 span요소&lt;/span&gt;
&lt;div class=&quot;fifth&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5-1. first를 가지고 있지 않은 p요소/fifth의 자식요소 중 p요소&lt;/p&gt;
&lt;div&gt;5-2. fifth의 자식요소 중 p요소를 가지고 있지 않은 div요소&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>CSS</category>
      <category>css not</category>
      <category>not 선택자</category>
      <category>특정요소제외</category>
      <category>특정태그제외</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/24</guid>
      <comments>https://ak-coding.tistory.com/24#entry24comment</comments>
      <pubDate>Mon, 6 Sep 2021 15:40:17 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScrit] checkbox / radio readonly 설정하기</title>
      <link>https://ak-coding.tistory.com/10</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;readonly 설정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;input의 경우 아래와 같이 readonly를 간단하게 처리할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1627367989390&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;input type=&quot;text&quot; name=&quot;&quot; readonly&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 checkbox나 radio버튼은 readonly속성이 적용되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;그래서 onclick을 직접 적용하여 readonly을 설정하거나 스크립트로 설정을 해주어야 한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예시 1&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;input에 return false를 적용&lt;/p&gt;
&lt;pre id=&quot;code_1627367104085&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// checkbox
&amp;lt;input type=&quot;checkbox&quot; onclick=&quot;return false;&quot; checked&amp;gt;
// radio
&amp;lt;input type=&quot;radio&quot; onclick=&quot;return false;&quot; checked&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예시 2&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;input에 return false를 스크립트로 일괄 적용&lt;/p&gt;
&lt;pre id=&quot;code_1627375771576&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// checkbox
&amp;lt;input type=&quot;checkbox&quot; class=&quot;readonly&quot; checked&amp;gt;
// radio
&amp;lt;input type=&quot;radio&quot; class=&quot;readonly&quot; checked&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1627375145049&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let ipt = document.querySelectorAll('input.readonly');
for(let i = 0; i &amp;lt; ipt.length; i++) {
  ipt[i].setAttribute('onclick', 'return false');
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결과물&lt;/h3&gt;
&lt;div class=&quot;jk line&quot;&gt;
&lt;div class=&quot;check-wrap&quot;&gt;&lt;label for=&quot;check01&quot;&gt;&lt;input id=&quot;check01&quot; checked=&quot;checked&quot; type=&quot;checkbox&quot; onclick=&quot;return false;&quot;/&gt;&lt;span class=&quot;txt&quot;&gt;체크박스가 해제되지 않는다.&lt;/span&gt;&lt;/label&gt;&lt;/div&gt;
&lt;div class=&quot;check-wrap&quot;&gt;&lt;label for=&quot;check02&quot;&gt;&lt;input id=&quot;check02&quot; checked=&quot;checked&quot; type=&quot;checkbox&quot; /&gt;&lt;span class=&quot;txt&quot;&gt;체크박스가 해제 된다.&lt;/span&gt;&lt;/label&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;radio-wrap&quot;&gt;&lt;label for=&quot;radio01&quot;&gt;&lt;input id=&quot;radio01&quot; checked=&quot;checked&quot; name=&quot;radio&quot; type=&quot;radio&quot; onclick=&quot;return false;&quot; /&gt;&lt;span class=&quot;txt&quot;&gt;라디오 버튼이 변경되지 않는다.&lt;/span&gt;&lt;/label&gt;&lt;/div&gt;
&lt;div class=&quot;radio-wrap&quot;&gt;&lt;label for=&quot;radio02&quot;&gt;&lt;input id=&quot;radio02&quot; name=&quot;radio&quot; type=&quot;radio&quot; /&gt;&lt;span class=&quot;txt&quot;&gt;라디오 버튼이 변경되지 않는다.&lt;/span&gt;&lt;/label&gt;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Resourec</category>
      <category>checkbox readonly</category>
      <category>JavaScript</category>
      <category>JS</category>
      <category>radio readonly</category>
      <category>readonly</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/10</guid>
      <comments>https://ak-coding.tistory.com/10#entry10comment</comments>
      <pubDate>Mon, 30 Aug 2021 22:11:50 +0900</pubDate>
    </item>
    <item>
      <title>[CSS] :first-child() :first-of-type 가상 클래스(의사 클래스)</title>
      <link>https://ak-coding.tistory.com/27</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;:first-child&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지정 요소가 형제 요소 중 제일 첫 요소인 경우&lt;/li&gt;
&lt;li&gt;다른 말로 부모의 자식 요소 중 첫 번째 자식을 선택&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CSS&lt;/h3&gt;
&lt;pre id=&quot;code_1630626635156&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.parents p:first-child {
  background-color: green;
  color: #fff;
}
.parents &amp;gt; p:first-child {
  text-decoration: underline;
  font-style: italic;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 예시에서 부모는 .parents가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;p:first-child&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부모의 자식 요소(=형제 요소) 중 첫 번째 요소가 p(지정 요소)인 경우에 스타일을 적용한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;HTML&lt;/h3&gt;
&lt;pre id=&quot;code_1630626521039&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;parents&quot;&amp;gt;
  &amp;lt;p&amp;gt;1. 첫번째 p요소&amp;lt;/p&amp;gt;
  &amp;lt;p&amp;gt;2. 두번째 p요소&amp;lt;/p&amp;gt;
  &amp;lt;div&amp;gt;
    3. 첫번째 div 요소
    &amp;lt;p&amp;gt;3-1. div 내부의 첫번째 p요소&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결과&lt;/h3&gt;
&lt;div class=&quot;jk line mg0 firstChild&quot;&gt;
&lt;div class=&quot;parents&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 첫번째 p요소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 두번째 p요소&lt;/p&gt;
&lt;div&gt;3. 첫번째 div 요소
&lt;p data-ke-size=&quot;size16&quot;&gt;3-1. div 내부의 첫번째 p요소&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;:first-of-type&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지정 요소가 동일 타입의 형제 요소 중 제일 첫 요소인 경우&lt;/li&gt;
&lt;li&gt;다른 말로 부모의 자식 요소 중 각 타입별로 첫번째로 노출되는 요소&lt;/li&gt;
&lt;li&gt;선택자를 지정하지 않으면 전체 선택자(*)로 지정된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CSS&lt;/h3&gt;
&lt;pre id=&quot;code_1630626707267&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.parents p:first-of-type {
  background-color: green;
  color: #fff;
}
.parents &amp;gt; div :first-of-type {
  background-color: gray;
  color: #fff;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;p:first-of-type&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부모의 자식요소(=형제요소)중 p(지정 요소)의 동일 타입들 중에서 첫 번째 p요소만 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;div :first-of-type&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;:first-of-type의 선택자를 지정하지 않는 경우 전체 선택자(*)로 반영되어 첫 번째로 오는 타입의 모든 요소가 선택된다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;HTML&lt;/h3&gt;
&lt;pre id=&quot;code_1630626906537&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;parents&quot;&amp;gt;
  &amp;lt;p&amp;gt;1. 첫번째 p요소&amp;lt;/p&amp;gt;
  &amp;lt;p&amp;gt;2. 두번째 p요소&amp;lt;/p&amp;gt;
  &amp;lt;div&amp;gt;
    3. 첫번째 div 요소
    &amp;lt;div&amp;gt;3-1. div 내부의 div 중에서 첫번째 p요소&amp;lt;/div&amp;gt;
    &amp;lt;p&amp;gt;3-1. div 내부의 p 중에서 첫번째 p요소&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class=&quot;parents&quot;&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;div&amp;gt;4-1. div 내부의 첫번째 div 요소&amp;lt;/div&amp;gt;
    &amp;lt;p&amp;gt;4-2. div 내부의 첫번째 p 요소&amp;lt;/p&amp;gt;
    &amp;lt;div&amp;gt;4-3. div 내부의 첫번째 p 요소&amp;lt;/div&amp;gt;
    &amp;lt;span&amp;gt;4-4. div 내부의 첫번째 p 요소&amp;lt;/span&amp;gt;
    &amp;lt;p&amp;gt;4-5. div 내부의 첫번째 p 요소&amp;lt;/p&amp;gt;
    &amp;lt;em&amp;gt;4-6. div 내부의 첫번째 p 요소&amp;lt;/em&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결과&lt;/h3&gt;
&lt;div class=&quot;jk line mg0 firstOfType&quot;&gt;
&lt;div class=&quot;parents&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 첫번째 p요소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 두번째 p요소&lt;/p&gt;
&lt;div&gt;3. 첫번째 div 요소
&lt;div&gt;3-1. div 내부의 div 중에서 첫번째 p요소&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3-1. div 내부의 p 중에서 첫번째 p요소&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;parents&quot;&gt;
&lt;div&gt;
&lt;div&gt;4-1. div 내부의 첫번째 div 요소&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4-2. div 내부의 첫번째 p 요소&lt;/p&gt;
&lt;div&gt;4-3. div 내부의 첫번째 p 요소&lt;/div&gt;
&lt;span&gt;4-4. div 내부의 첫번째 p 요소&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4-5. div 내부의 첫번째 p 요소&lt;/p&gt;
&lt;i&gt;4-6. div 내부의 첫번째 p 요소&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;first-child와는 반대로 마지막 요소를 선택하는 last-child도 있다.&lt;/p&gt;</description>
      <category>CSS</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/27</guid>
      <comments>https://ak-coding.tistory.com/27#entry27comment</comments>
      <pubDate>Mon, 30 Aug 2021 15:37:11 +0900</pubDate>
    </item>
    <item>
      <title>[CSS] Youtube 반응형 적용하기(유튜브 100%)</title>
      <link>https://ak-coding.tistory.com/26</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;반응형 사이트나 모바일에서 유튜브 등의 동영상을 iframe으로 삽입할 경우 제공되는 소스를 그대로 넣으면 사이트가 어긋난다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유튜브에서는 반응형을 지원하지 않기에 css로 처리를 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동영상의 width는 100%, height는 0으로 설정하여 화면에서 보여지지 않게 한 후에 padding값을 조절하여 모바일 어느 기기에서도 width, height 둘 다 100%로 보여지게 한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;HTML&lt;/h2&gt;
&lt;pre id=&quot;code_1626825514332&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;video-container&quot;&amp;gt;
  &amp;lt;iframe src=&quot;https://www.youtube.com/embed/cOA2yaGY0GU&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&amp;gt;&amp;lt;/iframe&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;CSS&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화면의 비율에 따라 padding값을 다르게 줘야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대부분이 56.25%이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;화면 비율&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;21:9 일경우 9/21 = 0.42857140.4285714285714286‬%&lt;br /&gt;16:9 일경우 9/16 = 0.5625%&lt;br /&gt;4:3 일경우 3/4 = 0.75%&lt;/p&gt;
&lt;pre class=&quot;css&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;.video-container {
  position:relative;
  height:0;
  padding-bottom:56.25%;
}

.video-container iframe {
  position:absolute;
  top:0;
  left:0;
  width:100%;
  height:100%;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과물&lt;/h2&gt;
&lt;div class=&quot;jk full&quot;&gt;
&lt;div class=&quot;video-container&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/cOA2yaGY0GU&quot; width=&quot;300&quot; height=&quot;225&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Resourec</category>
      <category>youtube</category>
      <category>Youtube 100%</category>
      <category>반응형 유튜브</category>
      <category>유튜브 100%</category>
      <category>유튜브 반응형</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/26</guid>
      <comments>https://ak-coding.tistory.com/26#entry26comment</comments>
      <pubDate>Thu, 26 Aug 2021 18:17:56 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] resize 이벤트 최적화 시키기</title>
      <link>https://ak-coding.tistory.com/11</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;resize 이벤트는 브라우저가 resize가 되는 동안 계속 실행이 되기 때문에 성능면에서 좋지 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 setTimeout과 clearTime을 사용으로 resize가 완료된 이후 한번만 실행을 하게 할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1627449911166&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let resizeTimer = null;
function resizeComplete() {
  // 리사이즈 함수 사용
  console.log('resize Complete');
}

window.addEventListener('resize', function() {
  clearTimeout(resizeTimer);
  resizeTimer = setTimeout(resizeComplete, 400);
}, false);&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Resourec</category>
      <category>resize</category>
      <category>resize 이벤트</category>
      <category>리사이즈</category>
      <category>리사이즈 이벤트</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/11</guid>
      <comments>https://ak-coding.tistory.com/11#entry11comment</comments>
      <pubDate>Sun, 22 Aug 2021 09:25:18 +0900</pubDate>
    </item>
    <item>
      <title>[아이폰] 전화번호 스팸 등록 및 스팸 해제 방법</title>
      <link>https://ak-coding.tistory.com/25</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;전화번호 스팸 등록 및 복구&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지겹게 오는 스팸문자들&amp;hellip;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매번 스팸 등록을 해도 또 다른 번호로 오지만 난 끝까지 전부 스팸 등록을 진행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 스팸등록하는 방법이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size20&quot;&gt;스팸 등록하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사진에 있는 노란색 네모 부분만 확인해가며 그대로 따라 하면 스팸 등록이 완료된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-filename=&quot;item1.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D7o9u/btsBFnxsaXI/xCbSh0WfdpIWdc1xvlpCf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD7o9u%2FbtsBFnxsaXI%2FxCbSh0WfdpIWdc1xvlpCf1%2Fimg.png&quot; data-filename=&quot;item1.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot; /&gt;
&lt;figcaption&gt;스팸문자 화면에서 디바이스 상단 중앙에 있는 사람 모양 아이콘 터치&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-filename=&quot;item2.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7diOf/btsBCnZidUq/6r51ksxoNPoG4O2GoX2RI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7diOf%2FbtsBCnZidUq%2F6r51ksxoNPoG4O2GoX2RI1%2Fimg.png&quot; data-filename=&quot;item2.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot; /&gt;
&lt;figcaption&gt;정보 터치&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-filename=&quot;item3.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjk7Nj/btsBFetMXAF/RKMEIqBacAGKChkENblrK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjk7Nj%2FbtsBFetMXAF%2FRKMEIqBacAGKChkENblrK1%2Fimg.png&quot; data-filename=&quot;item3.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot; /&gt;
&lt;figcaption&gt;이 발신자 차단&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-filename=&quot;item4.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dxop2L/btsBFpPzErp/YO3ajYkQ8qOZF9UHphOj3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdxop2L%2FbtsBFpPzErp%2FYO3ajYkQ8qOZF9UHphOj3k%2Fimg.png&quot; data-filename=&quot;item4.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot; /&gt;
&lt;figcaption&gt;하단에서 올라오는 화면의 연락처 차단&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-filename=&quot;item5.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bglvvj/btsBzz0tfwM/aH1OpnEy6EsiYwr7FgjRaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbglvvj%2FbtsBzz0tfwM%2FaH1OpnEy6EsiYwr7FgjRaK%2Fimg.png&quot; data-filename=&quot;item5.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot; /&gt;
&lt;figcaption&gt;이 발신자 차단 해제가 나오면 스팸등록이 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size20&quot;&gt;스팸 등록된 전화번호 복구&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스팸을 잘못 등록하거나 해지를 해야 하는 경우 아래와 같이 진행을 하면 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-filename=&quot;item6.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csVQHm/btsByyOzIne/dHmaJPwKGIuKV1p6RHUvY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsVQHm%2FbtsByyOzIne%2FdHmaJPwKGIuKV1p6RHUvY1%2Fimg.png&quot; data-filename=&quot;item6.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot; /&gt;
&lt;figcaption&gt;설정 화면에서 아래로 스크롤 하여 메시지 터치&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-filename=&quot;item7.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BwNeT/btsBB8adZ0A/aPYo9DIJv5DQOpCPjZMvu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBwNeT%2FbtsBB8adZ0A%2FaPYo9DIJv5DQOpCPjZMvu0%2Fimg.png&quot; data-filename=&quot;item7.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot; /&gt;
&lt;figcaption&gt;아래로 스크롤 하여 차단된 연락처 터치&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-filename=&quot;item8.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P6GuC/btsBDR6Evdu/kiN3XlRKYam98MkaFQ67w0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP6GuC%2FbtsBDR6Evdu%2FkiN3XlRKYam98MkaFQ67w0%2Fimg.png&quot; data-filename=&quot;item8.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot; /&gt;
&lt;figcaption&gt;차단된 연락처에서 차단 해제할 연락처를 찾아서 터치&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-filename=&quot;item9.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tE6zR/btsBCtrGoRR/e0ltCj1kpjZ0nYkdNwi8k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtE6zR%2FbtsBCtrGoRR%2Fe0ltCj1kpjZ0nYkdNwi8k1%2Fimg.png&quot; data-filename=&quot;item9.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1792&quot; /&gt;
&lt;figcaption&gt;새로운 연락처 등록 또는 기존의 연락처에 추가를 하여 차단 해제 및 신규 등록&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>일상</category>
      <category>스팸등록</category>
      <category>스팸해제</category>
      <category>아이폰</category>
      <category>아이폰 스팸</category>
      <category>아이폰 스팸등록</category>
      <category>아이폰 스팸복구</category>
      <category>아이폰 스팸해제</category>
      <category>아이폰 전화번호 차단</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/25</guid>
      <comments>https://ak-coding.tistory.com/25#entry25comment</comments>
      <pubDate>Fri, 20 Aug 2021 11:50:16 +0900</pubDate>
    </item>
    <item>
      <title>[CSS] :only-child :only-of-type 가상 클래스(의사 클래스)</title>
      <link>https://ak-coding.tistory.com/22</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;:only-child&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지정 요소가 부모의 유일한 자식 요소인 경우&lt;/li&gt;
&lt;li&gt;다르게 말해서 부모의 자식 요소가 지정 요소 하나만 있는 경우에 적용이 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;:only-of-type&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지정 요소가 부모의 자식 요소중 동일한 타입이 없는 경우&lt;/li&gt;
&lt;li&gt;부모의 자식 요소 중 다른 타입의 형제 요소들은 있어도 상관없다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CSS&lt;/h3&gt;
&lt;pre id=&quot;code_1627025163401&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.parents div:only-child {
  background-color: green;
  color: #fff;
}

.parents p:only-child {
  background-color: gray;
  color: #fff;
}

.parents p:only-of-type {
  text-decoration: underline;
  font-style: italic;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;HTML&lt;/h3&gt;
&lt;pre id=&quot;code_1627027751969&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;parents&quot;&amp;gt;
  &amp;lt;div&amp;gt;1. parents의 자식이 오직 &amp;lt;div&amp;gt; 하나이므로 only-child 적용&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class=&quot;parents&quot;&amp;gt;
  &amp;lt;p&amp;gt;2. parents의 자식요소중 유일한 &amp;lt;p&amp;gt;태그이므로 only-child, only-of-type 적용&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class=&quot;parents&quot;&amp;gt;
  &amp;lt;div&amp;gt;3. parents의 자식이 &amp;lt;div&amp;gt;와 &amp;lt;p&amp;gt;가 있으므로 only-child 무시&amp;lt;/div&amp;gt;
  &amp;lt;p&amp;gt;3. parents의 자식요소중 유일한 &amp;lt;p&amp;gt;태그이므로 only-of-type 적용&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class=&quot;parents&quot;&amp;gt;
  &amp;lt;div&amp;gt;4. parents의 자식이 &amp;lt;div&amp;gt; 2개 이므로 only-child 무시&amp;lt;/div&amp;gt;
  &amp;lt;div&amp;gt;4. parents의 자식이 &amp;lt;div&amp;gt; 2개 이므로 only-child 무시&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class=&quot;grandparents&quot;&amp;gt;
  &amp;lt;div class=&quot;parents&quot;&amp;gt;
    5. 일반 텍스트
    &amp;lt;div&amp;gt;5. grandparents 자식의 parents의 자식이 &amp;lt;div&amp;gt; 하나이므로 only-child 적용&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결과&lt;/h3&gt;
&lt;div class=&quot;jk line mg0 onlyChild&quot;&gt;
&lt;div class=&quot;parents&quot;&gt;
&lt;div&gt;1. parents의 자식이 오직 &amp;lt;div&amp;gt; 하나이므로 only-child 적용&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;parents&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. parents의 자식요소중 유일한 &amp;lt;p&amp;gt;태그이므로 only-child, only-of-type 적용&lt;/p&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;parents&quot;&gt;
&lt;div&gt;3. parents의 자식이 &amp;lt;div&amp;gt;와 &amp;lt;p&amp;gt;가 있으므로 only-child 무시&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. parents의 자식요소중 유일한 &amp;lt;p&amp;gt;태그이므로 only-of-type 적용&lt;/p&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;parents&quot;&gt;
&lt;div&gt;4. parents의 자식이 &amp;lt;div&amp;gt; 2개 이므로 only-child 무시&lt;/div&gt;
&lt;div&gt;4. parents의 자식이 &amp;lt;div&amp;gt; 2개 이므로 only-child 무시&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;grandparents&quot;&gt;
&lt;div class=&quot;parents&quot;&gt;5. 일반 텍스트
&lt;div&gt;5. grandparents 자식의 parents의 자식이 &amp;lt;div&amp;gt; 하나이므로 only-child 적용&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>CSS</category>
      <category>only-of-type</category>
      <category>only:child</category>
      <category>가상클래스</category>
      <category>의사클래스</category>
      <category>자식요소 하나</category>
      <category>형제요소</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/22</guid>
      <comments>https://ak-coding.tistory.com/22#entry22comment</comments>
      <pubDate>Fri, 13 Aug 2021 17:49:40 +0900</pubDate>
    </item>
    <item>
      <title>[CSS] :nth-child :nth-of-type 가상 클래스(의사 클래스)</title>
      <link>https://ak-coding.tistory.com/23</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;:nth-child()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;형제 요소 중에서&amp;nbsp;순서에 따라 n번째를 선택하여 스타일을 적용한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;:nth-child(n)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;nth-of-type()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 타입의 형제&amp;nbsp;요소 중에서 순서에 따라 n번째를 선택하여 스타일을 적용한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;:nth-of-type(n)&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;키워드(n)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;odd&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;형제 요소중에 홀수번째인 요소 선택(1, 3, 5, 7, &amp;hellip;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;even&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;형제 요소중에 짝수번째인 요소 선택(2, 4, 6, 8, &amp;hellip;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;An + B&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A와 B는 정수의 입력값(B는 선택), n은 0부터 시작하는 양의 정수가 적용되어 A x n + B로 계산한 값이 대입된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시(A에 3, B에 1을 대입한 3n + 1)&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 80px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;th style=&quot;width: 14.2857%; height: 20px;&quot;&gt;A&lt;/th&gt;
&lt;td style=&quot;height: 20px;&quot; colspan=&quot;6&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%;&quot; colspan=&quot;7&quot;&gt;x(곱하기)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;th style=&quot;width: 14.2857%; height: 20px;&quot;&gt;n&lt;/th&gt;
&lt;td style=&quot;width: 14.2857%; height: 20px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 20px;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 20px;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 20px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 20px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 20px;&quot;&gt;...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%;&quot; colspan=&quot;7&quot;&gt;+(더하기)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th style=&quot;width: 14.2857%;&quot;&gt;B&lt;/th&gt;
&lt;td style=&quot;width: 14.2857%;&quot; colspan=&quot;6&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;th style=&quot;width: 14.2857%; height: 20px;&quot;&gt;결과&lt;/th&gt;
&lt;td style=&quot;width: 14.2857%; height: 20px;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 20px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 20px;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 20px;&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 20px;&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; height: 20px;&quot;&gt;...&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 예시 테이블을 풀어보면 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3 x 0 + 1 = 1&lt;br /&gt;3 x 1 + 1 = 4&lt;br /&gt;3 x 2 + 1 = 7&lt;br /&gt;3 x 3 + 1 = 10&lt;br /&gt;3 x 4 + 1 = 13&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;:nth-child 예시&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;CSS&lt;/h4&gt;
&lt;pre id=&quot;code_1628551416391&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.parents p:nth-child(odd) {
  background-color: green;
  color:#fff;
}
.parents p:nth-child(even) {
  background-color: gray;
  color:#fff;
}
.parents p:nth-child(3n) {
  font-style: italic;
}
.parents p:nth-child(3n + 1) {
  text-decoration:unlerline;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;HTML&lt;/h4&gt;
&lt;pre id=&quot;code_1628552099835&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;parents&quot;&amp;gt;
  &amp;lt;p&amp;gt;1. 형제요소 p odd 3n+1&amp;lt;/p&amp;gt;
  &amp;lt;span&amp;gt;2. 형제요소 (even 이지만 span이라 적용안됨)&amp;lt;/span&amp;gt;
  &amp;lt;p&amp;gt;3. 형제요소 p odd 3n&amp;lt;/p&amp;gt;
  &amp;lt;span&amp;gt;4. 형제요소 (even 3n+1 이지만 span이라 적용안됨)&amp;lt;/span&amp;gt;
  &amp;lt;p&amp;gt;5. 형제요소 p odd&amp;lt;/p&amp;gt;
  &amp;lt;span&amp;gt;6. 형제요소 (even 3n 이지만 span이라 적용안됨)&amp;lt;/span&amp;gt;
  &amp;lt;p&amp;gt;7. 형제요소 p odd 3n+1&amp;lt;/p&amp;gt;
  &amp;lt;p&amp;gt;8. 형제요소 p even&amp;lt;/p&amp;gt;
  &amp;lt;span&amp;gt;9. 형제요소 (odd 3n 이지만 span이라 적용안됨)&amp;lt;/span&amp;gt;
  &amp;lt;p&amp;gt;10. 형제요소 p even 3n+1&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;span 태그를 제외한 p태그 중에서&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;odd인 1, 3, 5, 7는 green&lt;br /&gt;even인 8, 10은 gray&lt;br /&gt;3n인 3는 italic&lt;br /&gt;3n + 1인 1, 7, 10은 underline 적용&lt;/p&gt;
&lt;div class=&quot;jk line mg0 nthChild&quot;&gt;
&lt;div class=&quot;parents&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 형제요소 &amp;lt;p&amp;gt; odd 3n+1&lt;/p&gt;
&lt;span&gt;2. 형제요소 (even 이지만 &amp;lt;span&amp;gt;이라 적용안됨)&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 형제요소 &amp;lt;p&amp;gt; odd 3n&lt;/p&gt;
&lt;span&gt;4. 형제요소 (even 3n+1 이지만 &amp;lt;span&amp;gt;이라 적용안됨)&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 형제요소 &amp;lt;p&amp;gt; odd&lt;/p&gt;
&lt;span&gt;6. 형제요소 (even 3n 이지만 &amp;lt;span&amp;gt;이라 적용안됨)&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. 형제요소 &amp;lt;p&amp;gt; odd 3n+1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8. 형제요소 &amp;lt;p&amp;gt; even&lt;/p&gt;
&lt;span&gt;9. 형제요소 (odd 3n 이지만 &amp;lt;span&amp;gt;이라 적용안됨)&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10. 형제요소 &amp;lt;p&amp;gt; even 3n + 1&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;:nth-of-type 예시&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;CSS&lt;/h4&gt;
&lt;pre id=&quot;code_1628553079484&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.parents p:nth-of-type(odd) {
  background-color: green;
  color:#fff;
}
.parents p:nth-of-type(even) {
  background-color: gray;
  color:#fff;
}
.parents p:nth-of-type(3n) {
  font-style: italic;
}
.parents p:nth-of-type(3n + 1) {
  text-decoration:unlerline;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;HTML&lt;/h4&gt;
&lt;pre id=&quot;code_1628553135537&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;parents&quot;&amp;gt;
  &amp;lt;p&amp;gt;1. 동일 타입의 형제요소 p odd&amp;lt;/p&amp;gt;
  &amp;lt;span&amp;gt;span 요소&amp;lt;/span&amp;gt;
  &amp;lt;p&amp;gt;2. 동일 타입의 형제요소 p even&amp;lt;/p&amp;gt;
  &amp;lt;span&amp;gt;span 요소&amp;lt;/span&amp;gt;
  &amp;lt;p&amp;gt;3. 동일 타입의 형제요소 p odd 3n&amp;lt;/p&amp;gt;
  &amp;lt;span&amp;gt;span 요소&amp;lt;/span&amp;gt;
  &amp;lt;p&amp;gt;4. 동일 타입의 형제요소 p even 3n&amp;lt;/p&amp;gt;
  &amp;lt;p&amp;gt;5. 동일 타입의 형제요소 p odd&amp;lt;/p&amp;gt;
  &amp;lt;span&amp;gt;span 요소&amp;lt;/span&amp;gt;
  &amp;lt;p&amp;gt;6. 동일 타입의 형제요소 p even 3n&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;결과&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;span 태그는 제외하고 동일 타입인 p태그만 순서를 정하여&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;odd인 1, 3, 5는 green&lt;br /&gt;even인 2, 4, 6은 gray&lt;br /&gt;3n인 3, 6은 italic&lt;br /&gt;3n + 1인 1, 4는 underline 적용&lt;/p&gt;
&lt;div class=&quot;jk line mg0 nthOfChild&quot;&gt;
&lt;div class=&quot;parents&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 동일 타입의 형제요소 &amp;lt;p&amp;gt; odd&lt;/p&gt;
&lt;span&gt;&amp;lt;span&amp;gt; 요소&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 동일 타입의 형제요소 &amp;lt;p&amp;gt; even&lt;/p&gt;
&lt;span&gt;&amp;lt;span&amp;gt; 요소&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 동일 타입의 형제요소 &amp;lt;p&amp;gt; odd 3n&lt;/p&gt;
&lt;span&gt;&amp;lt;span&amp;gt; 요소&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 동일 타입의 형제요소 &amp;lt;p&amp;gt; even 3n&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 동일 타입의 형제요소 &amp;lt;p&amp;gt; odd&lt;/p&gt;
&lt;span&gt;&amp;lt;span&amp;gt; 요소&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 동일 타입의 형제요소 &amp;lt;p&amp;gt; even 3n&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>CSS</category>
      <category>nth-child</category>
      <category>nth-of-type</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/23</guid>
      <comments>https://ak-coding.tistory.com/23#entry23comment</comments>
      <pubDate>Wed, 11 Aug 2021 11:16:39 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] length 문자열 길이 - 자바스크립트</title>
      <link>https://ak-coding.tistory.com/21</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;String.length&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열의 길이를 반환하는 속성(property)이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;String.length&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;숫자 타입의 경우 undefined를 반환한다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;공백도 길이에 포함된다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1626764497310&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello world';
let blank = '   '; // 공백 3칸
let num = 123;
str.length; // 11
blank.length; // 3
num.length; // undedined&lt;/code&gt;&lt;/pre&gt;</description>
      <category>JavaScript</category>
      <category>JavaScript</category>
      <category>JS</category>
      <category>Length</category>
      <category>문자열 길이</category>
      <category>자바스크립트</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/21</guid>
      <comments>https://ak-coding.tistory.com/21#entry21comment</comments>
      <pubDate>Mon, 9 Aug 2021 17:23:17 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] Number() 문자열을 숫자로 타입 변환 - 자바스크립트</title>
      <link>https://ak-coding.tistory.com/20</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Number()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열을 숫자로 변환해주는 함수&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;Number(value)&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;매개변수(parameter)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. value&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열 또는 문자열을 값으로 하는 변수&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1626762646196&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = '123'
let num = Number(str); // 123
typeof(num); // 'number'
Number('123'); // 123&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자를 문자열로 변경할 때는 String() 사용&lt;/p&gt;
&lt;figure id=&quot;og_1628466832188&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[JavaScript] String() 숫자를 문자열로 타입 변환 - 자바스크립트&quot; data-og-description=&quot;String() 숫자를 문자열로 변환해주는 함수 문법(Syntax) String(thing) 매개변수(parameter) 1. thing 문자열로 변환할 값 숫자 또는 숫자를 값으로 하는 변수 let num = 123; let str = String(num); // '123' t..&quot; data-og-host=&quot;ak-coding.tistory.com&quot; data-og-source-url=&quot;https://ak-coding.tistory.com/19&quot; data-og-url=&quot;https://ak-coding.tistory.com/19&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fHvH2/hyLbb2Ha7I/XPwGPJtL2M7dnkqr59GJQk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/35D53/hyLa3KmYZV/luwKffhsyhkzdDGBWAbpoK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/v9HlY/hyLa0myX0c/ABTgQiKFc0kMb7uEWcPzPK/img.jpg?width=428&amp;amp;height=428&amp;amp;face=0_0_428_428&quot;&gt;&lt;a href=&quot;https://ak-coding.tistory.com/19&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ak-coding.tistory.com/19&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fHvH2/hyLbb2Ha7I/XPwGPJtL2M7dnkqr59GJQk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/35D53/hyLa3KmYZV/luwKffhsyhkzdDGBWAbpoK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/v9HlY/hyLa0myX0c/ABTgQiKFc0kMb7uEWcPzPK/img.jpg?width=428&amp;amp;height=428&amp;amp;face=0_0_428_428');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[JavaScript] String() 숫자를 문자열로 타입 변환 - 자바스크립트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;String() 숫자를 문자열로 변환해주는 함수 문법(Syntax) String(thing) 매개변수(parameter) 1. thing 문자열로 변환할 값 숫자 또는 숫자를 값으로 하는 변수 let num = 123; let str = String(num); // '123' t..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ak-coding.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>JavaScript</category>
      <category>JavaScript</category>
      <category>JS</category>
      <category>Number()</category>
      <category>문자열 함수</category>
      <category>문자열을 숫자로</category>
      <category>자바스크립트</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/20</guid>
      <comments>https://ak-coding.tistory.com/20#entry20comment</comments>
      <pubDate>Sun, 8 Aug 2021 17:21:17 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] String() 숫자를 문자열로 타입 변환 - 자바스크립트</title>
      <link>https://ak-coding.tistory.com/19</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;String()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자를 문자열로 변환해주는 함수&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;String(thing)&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;매개변수(parameter)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. thing&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열로 변환할 값&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;숫자 또는 숫자를 값으로 하는 변수&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1626761981668&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let num = 123;
let str = String(num); // '123'
typeof(str); // 'string'
String(123); // '123'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열을 숫자로 변경할 때는 Number() 사용&lt;/p&gt;
&lt;figure id=&quot;og_1628466739582&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[JavaScript] Number() 문자열을 숫자로 타입 변환 - 자바스크립트&quot; data-og-description=&quot;Number() 문자열을 숫자로 변환해주는 함수 문법(Syntax) Number(value) 매개변수(parameter) 1. value 문자열 또는 문자열을 값으로 하는 변수 let str = '123' let num = Number(str); // 123 typeof(num); // '..&quot; data-og-host=&quot;ak-coding.tistory.com&quot; data-og-source-url=&quot;https://ak-coding.tistory.com/20&quot; data-og-url=&quot;https://ak-coding.tistory.com/20&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b0Dclk/hyLa0tjPF9/N7OQqi4kHVzkD9qQtdz151/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/tEhdB/hyLa1TjNLZ/h1YiKZqWzdAGrI7TIUoRY1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/h39ZF/hyLa4P1YsZ/bSkgkQX6jhzfWVPxkSAN9K/img.jpg?width=428&amp;amp;height=428&amp;amp;face=0_0_428_428&quot;&gt;&lt;a href=&quot;https://ak-coding.tistory.com/20&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ak-coding.tistory.com/20&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b0Dclk/hyLa0tjPF9/N7OQqi4kHVzkD9qQtdz151/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/tEhdB/hyLa1TjNLZ/h1YiKZqWzdAGrI7TIUoRY1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/h39ZF/hyLa4P1YsZ/bSkgkQX6jhzfWVPxkSAN9K/img.jpg?width=428&amp;amp;height=428&amp;amp;face=0_0_428_428');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[JavaScript] Number() 문자열을 숫자로 타입 변환 - 자바스크립트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Number() 문자열을 숫자로 변환해주는 함수 문법(Syntax) Number(value) 매개변수(parameter) 1. value 문자열 또는 문자열을 값으로 하는 변수 let str = '123' let num = Number(str); // 123 typeof(num); // '..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ak-coding.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>JavaScript</category>
      <category>JavaScript</category>
      <category>JS</category>
      <category>string</category>
      <category>문자열 함수</category>
      <category>문자열로 변환</category>
      <category>자바스크립트</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/19</guid>
      <comments>https://ak-coding.tistory.com/19#entry19comment</comments>
      <pubDate>Fri, 6 Aug 2021 16:19:29 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] concat() 문자열 합치기 - 자바스크립트</title>
      <link>https://ak-coding.tistory.com/17</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;String.contact()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 개의 문자열을 하나의 문자열로 합쳐 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열에 사용하는 경우에도 동일하게 여러 개의 배열을 합쳐 하나의 배열로 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원본 문자열은 변경되지 않는다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;str.concat(string2, string3[, ..., stringN])&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;매개변수(parameter)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. string2...stringN&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;합칠 문자열&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;string2는 필수이다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;인자 값이 문자열이 아닌 경우 문자열로 변환 후 결과값을 반환한다.&lt;/li&gt;
&lt;li&gt;처음이 문자열이 아닌 경우 에러 메시지를 호출한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1626683584402&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str1 = 'hello';
let str2 = ' world';
let num = 7;
str1.concat(str2); // hello world
str1.concat(str2, num): // hello world7
str1.concat(typeof(str2, num)); // string
num.concat(str1, str2); // num.concat is not a function&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;성능면에서 concat() 메서드보다 할당연산자(+, +=)를 사용하는 게 좋다.&lt;/u&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1626684391426&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;concat vs + vs join &amp;middot; jsPerf&quot; data-og-description=&quot;Test runner Warning! For accurate results, please disable Firebug before running the tests. (Why?) Java applet disabled. To run the tests, please enable JavaScript and reload the page. Testing in ArchiveTeam ArchiveBot 20170106.02.0 / Windows 7 0.0.0 Test &quot; data-og-host=&quot;web.archive.org&quot; data-og-source-url=&quot;https://web.archive.org/web/20170404182053/https://jsperf.com/concat-vs-plus-vs-join&quot; data-og-url=&quot;https://web.archive.org/web/20170404182053/https://jsperf.com/concat-vs-plus-vs-join&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://web.archive.org/web/20170404182053/https://jsperf.com/concat-vs-plus-vs-join&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://web.archive.org/web/20170404182053/https://jsperf.com/concat-vs-plus-vs-join&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;concat vs + vs join &amp;middot; jsPerf&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Test runner Warning! For accurate results, please disable Firebug before running the tests. (Why?) Java applet disabled. To run the tests, please enable JavaScript and reload the page. Testing in ArchiveTeam ArchiveBot 20170106.02.0 / Windows 7 0.0.0 Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;web.archive.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;(MDN Web Docs -&amp;nbsp;&lt;a href=&quot;https://developer.mozilla.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.mozilla.org&lt;/a&gt;)&lt;/p&gt;</description>
      <category>JavaScript</category>
      <category>JavaScript</category>
      <category>JS</category>
      <category>문자열</category>
      <category>문자열 함수</category>
      <category>문자열 합치기</category>
      <category>자바스크립트</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/17</guid>
      <comments>https://ak-coding.tistory.com/17#entry17comment</comments>
      <pubDate>Wed, 4 Aug 2021 13:56:07 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] toUpperCase() 대문자로 변환 - 자바스크립트</title>
      <link>https://ak-coding.tistory.com/15</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;String.toUpperCase()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열을 대문자로 변환 후 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원본 문자열은 변경되지 않는다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;str.toUpperCase()&lt;/blockquote&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예시&lt;/h3&gt;
&lt;pre id=&quot;code_1626681964630&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'Hello World';
str.toUpperCase(); // HELLO WORLD
str.toLowerCase(); // hello world&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;toLowerCase()는 소문자로 변환 후 반환한다.&lt;/p&gt;</description>
      <category>JavaScript</category>
      <category>JavaScript</category>
      <category>JS</category>
      <category>tolowercase</category>
      <category>touppercase</category>
      <category>대문자 변환</category>
      <category>문자열</category>
      <category>문자열 함수</category>
      <category>자바스크립트</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/15</guid>
      <comments>https://ak-coding.tistory.com/15#entry15comment</comments>
      <pubDate>Tue, 3 Aug 2021 14:08:08 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] toLowerCase() 소문자로 변환 - 자바스크립트</title>
      <link>https://ak-coding.tistory.com/14</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;String.toLowerCase()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열을 소문자로 변환 후 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원본 문자열은 변경되지 않는다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;str.toLowerCase()&lt;/blockquote&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예시&lt;/h3&gt;
&lt;pre id=&quot;code_1626681964630&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'Hello World';
str.toLowerCase(); // hello world
str.toUpperCase(); // HELLO WORLD&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;toUpperCase()는 대문자로 변환 후 반환한다.&lt;/p&gt;</description>
      <category>JavaScript</category>
      <category>JavaScript</category>
      <category>JS</category>
      <category>tolowercase</category>
      <category>touppercase</category>
      <category>문자열</category>
      <category>문자열 함수</category>
      <category>소문자 변환</category>
      <category>자바스크립트</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/14</guid>
      <comments>https://ak-coding.tistory.com/14#entry14comment</comments>
      <pubDate>Sun, 1 Aug 2021 14:04:26 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] slice() 문자열 추출하기 - 자바스크립트</title>
      <link>https://ak-coding.tistory.com/13</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;String.slice()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열에서&amp;nbsp;&lt;u&gt;beginIndex부터 endIndex전&lt;/u&gt;까지의 문자들을 추출하여 반환하는 함수(endIndex가 없다면 문자열의 끝까지 추출 후 반환)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원본 문자열은 변경되지 않는다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;str.slice(beginIndex[, endIndex])&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;매개변수(parameter)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. beginIndex&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열에서 추출을 시작하는 index 위치(beginIndex부터 추출을 시작)&lt;/li&gt;
&lt;li&gt;str.length보다 크거나 같으면 빈 문자열 반환&lt;/li&gt;
&lt;li&gt;음수인 경우 str.length + beginIndex로 계산하여 추출한다.(beginIndex가 -8이라면 11 + (-8) = 3)&lt;/li&gt;
&lt;li&gt;str.length보다 크다면 빈 문자열 반환&lt;/li&gt;
&lt;li&gt;0이면 전체 문자열 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1626679254044&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello world';
str.slice(8); // rld
str.slice(-8); // lo wolrd ➡ slice(3)
str.slice(100); // ''
str.slice(0); // hello world&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. endIndex(optional)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열 추출 종료 index 위치(endIndex 전까지 추출)&lt;/li&gt;
&lt;li&gt;endIndex가 없다면 문자열의 끝까지 추출 후 반환&lt;/li&gt;
&lt;li&gt;endIndex가 beginIndex보다 작다면 빈 문자열 반환&lt;/li&gt;
&lt;li&gt;음수라면 str.length + endIndex로 계산하여 추출한다.(endIndex가 -2라면 11 + (-2) = 9)&lt;/li&gt;
&lt;li&gt;endIndex가 str.length보다 크다면 문자열의 끝까지 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1626679507446&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello world';
str.slice(2, 7); // llo w
str.slice(8, 2); // ''
str.slice(-1, -2); // ''
str.slice(1, -2); // ello wor ➡ slice(1, 9)
str.slice(-10, -2); // ello wor ➡ slice(1, 9)
str.slice(1, 100): // ello world&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;slice/substr/substring 비교&lt;/h3&gt;
&lt;div class=&quot;tbl-scroll&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-width=&quot;800&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th colspan=&quot;8&quot;&gt;문자열 hello world&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;&amp;nbsp;&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(-3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(0, 3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(3, 6)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(6, 3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(-6, 3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(8, 8)&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;slice()&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo world&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;rld&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hel&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;빈 문자열&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;빈 문자열&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;빈 문자열&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;substr()&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo world&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;rld&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hel&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo wor&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;wor&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;wo&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;rld&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;substring()&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo world&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hello world&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hel&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hel&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;빈 문자열&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;</description>
      <category>JavaScript</category>
      <category>JavaScript</category>
      <category>JS</category>
      <category>slice</category>
      <category>substr</category>
      <category>SubString</category>
      <category>문자열</category>
      <category>문자열 추출</category>
      <category>문자열 함수</category>
      <category>자바스크립트</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/13</guid>
      <comments>https://ak-coding.tistory.com/13#entry13comment</comments>
      <pubDate>Sat, 31 Jul 2021 14:01:54 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] substring() 문자열 추출하기 - 자바스크립트</title>
      <link>https://ak-coding.tistory.com/12</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;String.substring()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열에서 &lt;u&gt;indexStart부터&lt;/u&gt; &lt;u&gt;indexEnd전&lt;/u&gt;까지의 문자들을 추출하여 반환하는 함수(indexEnd가 없다면 문자열의 끝까지 추출 후 반환)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원본 문자열은 변경되지 않는다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;str.substring(indexStart[, indexEnd])&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;매개변수(parameter)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. indexStart&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열에서 추출을 시작하는 index 위치&lt;/li&gt;
&lt;li&gt;str.length보다 크거나 같으면 빈 문자열 반환&lt;/li&gt;
&lt;li&gt;0 또는 음수인 경우 indexStart를 0으로 처리하여 전체 문자열을 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 38px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th colspan=&quot;12&quot;&gt;문자열: hello world&lt;/th&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;h&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;e&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;l&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.60465%;&quot;&gt;l&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.95349%;&quot;&gt;o&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;공백&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 9.53488%;&quot;&gt;w&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.95349%;&quot;&gt;o&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;r&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.60465%;&quot;&gt;l&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 11.6279%;&quot;&gt;d&lt;/th&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.60465%;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.95349%;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 9.53488%;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.95349%;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.60465%;&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 11.6279%;&quot;&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre id=&quot;code_1626412524687&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello world';
str.substring(4); // o world
str.substring(10); // ''
str.substring(0); // hello world
str.substring(-5); // hello world&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;2. indexEnd(optional)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열 추출 종료 index 위치&lt;/li&gt;
&lt;li&gt;indexEnd가 없다면 문자열의 끝까지 추출 후 반환&lt;/li&gt;
&lt;li&gt;indexStart보다 indexEnd가 작다면 indexStart와&amp;nbsp;indexEnd의 값을 변경하여 처리한다.&lt;/li&gt;
&lt;li&gt;0 또는 음수인 경우 indexStart와&amp;nbsp;indexEnd의 값을 변경하여 처리한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1626419694293&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello world';
str.substring(2, 5); // llo
str.substring(5, 2); // llo ➡ substring(2, 5)
str.substring(-2, 5); // hello
str.substring(2, -1); // he ➡ substring(-1, 2)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;length를 사용하여 마지막 문자열 추출 가능&lt;/h3&gt;
&lt;pre id=&quot;code_1626676896254&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello world';
str.substring(str.length - 3); // rld&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;slice/substr/substring 비교&lt;/h3&gt;
&lt;div class=&quot;tbl-scroll&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-width=&quot;800&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th colspan=&quot;8&quot;&gt;문자열 hello world&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;&amp;nbsp;&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(-3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(0, 3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(3, 6)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(6, 3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(-6, 3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(8, 8)&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;slice()&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo world&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;rld&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hel&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;빈 문자열&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;빈 문자열&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;빈 문자열&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;substr()&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo world&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;rld&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hel&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo wor&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;wor&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;wo&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;rld&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;substring()&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo world&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hello world&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hel&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hel&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;빈 문자열&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;</description>
      <category>JavaScript</category>
      <category>JavaScript</category>
      <category>SubString</category>
      <category>문자열</category>
      <category>문자열 추출</category>
      <category>문자열 함수</category>
      <category>자바스크립트</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/12</guid>
      <comments>https://ak-coding.tistory.com/12#entry12comment</comments>
      <pubDate>Fri, 30 Jul 2021 12:52:54 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] substr() 문자열 추출하기 - 자바스크립트</title>
      <link>https://ak-coding.tistory.com/9</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;String.substr()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;문자열에서 start 다음부터 length 만큼의 문자들을&amp;nbsp;반환하는 함수(length가 없다면 문자열의 끝까지 추출 후 반환)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&lt;span style=&quot;caret-color: #212121;&quot;&gt;원본 문자열은 변경되지 않는다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;str.substr(start[, length])&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;매개변수(parameter)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. start&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열에서 추출을 시작하는 위치&lt;/li&gt;
&lt;li&gt;양수인 경우 &lt;u&gt;start 다음&lt;/u&gt;부터 시작한다.&lt;/li&gt;
&lt;li&gt;음수인 경우 문자열의 끝에서 &lt;u&gt;start만큼 뺀 곳부터&lt;/u&gt; 시작하며, 만약&amp;nbsp;start값이 문자열보다 크다면 index 0부터 시작한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1626331591538&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello world';
str.substr(3); // lo world
str.substr(11); // ''
str.substr(-4); // orld
str.substr(-100); // ''&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. length(optional)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;추출할 문자들의 총 개수&lt;/li&gt;
&lt;li&gt;생략된 경우 start부터 문자열의 끝까지 추출하여 반환한다.&lt;/li&gt;
&lt;li&gt;0 혹은 음수인 경우 빈 문자열을 반환한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1626332250450&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello world';
str.substr(6, 4); // orld
str.substr(5, -2); // ''
str.substr(-4, 2); // or
str.substr(-4, -4); ''&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;slice/substr/substring 비교&lt;/h3&gt;
&lt;div class=&quot;tbl-scroll&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-width=&quot;800&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th colspan=&quot;8&quot;&gt;문자열 hello world&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;&amp;nbsp;&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(-3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(0, 3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(3, 6)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(6, 3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(-6, 3)&lt;/th&gt;
&lt;th style=&quot;width: 12.5%;&quot;&gt;fn(8, 8)&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;slice()&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo world&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;rld&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hel&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;빈 문자열&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;빈 문자열&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;빈 문자열&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;substr()&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo world&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;rld&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hel&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo wor&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;wor&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;wo&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;rld&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;substring()&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo world&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hello world&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hel&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;lo&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;hel&lt;/td&gt;
&lt;td style=&quot;width: 12.5%;&quot;&gt;빈 문자열&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;</description>
      <category>JavaScript</category>
      <category>JavaScript</category>
      <category>subste</category>
      <category>문자열</category>
      <category>문자열 추출</category>
      <category>문자열 함수</category>
      <category>자바스크립트</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/9</guid>
      <comments>https://ak-coding.tistory.com/9#entry9comment</comments>
      <pubDate>Thu, 29 Jul 2021 14:41:38 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] split() 문자열 분할하기 - 자바스크립트</title>
      <link>https://ak-coding.tistory.com/8</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;String.split()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열을 지정한 구분자로 분할하여 여러개의 문자열을 배열에 저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열을 자르는 다른 방법으로는 substr(), substring()가 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;str.split([separator[, limit]])&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;매개변수(parameter)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. separator(optional)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열 또는 정규식으로&amp;nbsp;문자열을 잘라 줄 구분자&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #212121;&quot;&gt;separator이 등장하면 해당 부분을 삭제하고 남은 문자열을 배열로 반환한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1626249356088&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'dog cat cow lion';
str.split(); // ['dog cat cow lion']
str.split(' '); // ['dog', 'cat', 'cow', 'lion']
str.split(' ')[1]; // cat&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;값이 없으면 문자열 전체를 배열에 담아 반환한다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;공백(space)을 입력하면 띄어쓰기 별로 나눠서 배열로 반환한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;문자열을 분할하여 배열의 값으로 가지고 올 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. limit(optional)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분할하는 최대 개수 지정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1626325730219&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'dog,cat,cow,lion';
str.split(', ', 2); // ['dog', 'cat']&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;문자열을 쉼표(,)로 끊고 처음 2개의 문자열을 반환한다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;슬러시(/)로 되어 있는 구분자를 쉼표(,)로 변경하기&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1626327640551&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'dog/cat/cow/lion';
function changeSplit(str, searchSeparator, changeSeparator) {
  return str.split(searchSeparator).join(changeSeparator)
}
changeSplit(str, '/', ','); // dog,cat,cow,lion&lt;/code&gt;&lt;/pre&gt;</description>
      <category>JavaScript</category>
      <category>JavaScript</category>
      <category>Split</category>
      <category>문자열</category>
      <category>문자열 나누기</category>
      <category>문자열 분할</category>
      <category>문자열 함수</category>
      <category>자바스크립트</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/8</guid>
      <comments>https://ak-coding.tistory.com/8#entry8comment</comments>
      <pubDate>Wed, 28 Jul 2021 10:10:24 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] replace() 문자열 변환/치환하기 - 자바스크립트</title>
      <link>https://ak-coding.tistory.com/5</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;String.replace()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열 내에서 특정 문자를 다른 문자로 치환할 때 사용한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;str.replace(regexp|substr, newSubstr|function)&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;매개변수(Parameter)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. regexp|substr&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정규식 객체 또는 문자열로 치환하기 위해 찾는 파라미터&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. newString|function&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 파라미터를 대신할 문자열 또는 함수&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;replace() 함수를 사용하여 첫 번째 매개변수(&lt;span&gt;regexp|substr)를 찾아서 두 번째 매개변수(&lt;span&gt;newString|function)로 치환한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1626240347022&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'Hello Everyone';
let newStr = str.replace('e', '2');
console.log(str); // Hello Everyone
console.log(newStr); // He2llo Everyone&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열 str의 첫 번째 'e'가 '2'로 변경된 것을 확인할 수 있다.&lt;/li&gt;
&lt;li&gt;원래 문자열은 변경되지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1626240650533&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'Hello Everyone';
let newStr = str.replace(/e/g, '2');
console.log(newStr); // H2llo Ev2ryon2

let newStr2 = str.replace(/e/gi, '2');
console.log(newStr2); // H2llo 2v2ryon2&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정규식을 사용해서 치환도 가능하다.&lt;/li&gt;
&lt;li&gt;정규식으로 사용하려는 문자열을 / 로 감싸서 들어가는 파라미터가 정규표현식임을 선언한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정규식에서&lt;br /&gt;g는 전체 문자열을 치환(global)&lt;br /&gt;i는 영문 대소문자를 무시하고 일치하는 패턴 검색하여 치환(ignore)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;함수로 한번에 모두 치환하기&lt;/h3&gt;
&lt;pre id=&quot;code_1626241378724&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'Hello Everyone';
function replaceAll(str, searchStr, replaceStr) {
  return str.split(searchStr).join(replaceStr);
}
let str2 = replaceAll(str, 'e', '2')
console.log(str2); // H2llo Ev2ryon2&lt;/code&gt;&lt;/pre&gt;</description>
      <category>JavaScript</category>
      <category>JavaScript</category>
      <category>Replace</category>
      <category>replace()</category>
      <category>문자열</category>
      <category>문자열 치환</category>
      <category>자바스크립트</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/5</guid>
      <comments>https://ak-coding.tistory.com/5#entry5comment</comments>
      <pubDate>Mon, 26 Jul 2021 01:54:37 +0900</pubDate>
    </item>
    <item>
      <title>IKEA VITTSJ&amp;Ouml; 빗셰 / 이케아 빗셰 VITTSJO / 이케아 노트북 책상 / 자파현상 / 유리깨짐</title>
      <link>https://ak-coding.tistory.com/4</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;이케아에서 산 노트북 책상&amp;nbsp;VITTSJ&amp;Ouml; 빗셰가&amp;nbsp;자고 있는데 와장창 깨져버렸습니다...&lt;/p&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;615&quot; data-filename=&quot;이케아jpg.jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/emIRyB/btranytNgMN/WSVFxKdHftVNnktFPkOAO1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/emIRyB/btranytNgMN/WSVFxKdHftVNnktFPkOAO1/img.jpg&quot; data-alt=&quot;실제로 강화유리가 깨진 사진&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/emIRyB/btranytNgMN/WSVFxKdHftVNnktFPkOAO1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FemIRyB%2FbtranytNgMN%2FWSVFxKdHftVNnktFPkOAO1%2Fimg.jpg&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;615&quot; data-filename=&quot;이케아jpg.jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실제로 강화유리가 깨진 사진&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무슨 지진이 난 줄 알고 깜짝 놀라서 깨보니 저지경...&lt;br /&gt;사용하면서 특별히 무거운 걸 올려놓은 것도 아니고, 쿵쿵 치면서 사용한 것도 아닌데&lt;br /&gt;자기 스스로 깨져버렸습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;예전 TV에서 이케아 유리컵이 자파현상으로 깨진 다는 걸 보긴 봤지만&lt;/u&gt;&lt;/p&gt;
&lt;!-- &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.dispatch.co.kr/1348737&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;(&amp;ldquo;이케아에서 산 &amp;lsquo;900원&amp;rsquo; 유리컵이 갑자기 폭발했어요&amp;rdquo;)&lt;/a&gt;&lt;/p&gt;--&gt;
&lt;figure id=&quot;og_1626323139853&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;&amp;quot;이케아에서 산 '900원' 유리컵이 갑자기 폭발했어요&amp;quot;&quot; data-og-description=&quot;세계적으로 유명한 가구업체 '이케아'의 강화 유리컵. 단돈 900원에 판매하고 있어 인기가 높습니다.... [더보기]&quot; data-og-host=&quot;www.dispatch.co.kr&quot; data-og-source-url=&quot;https://www.dispatch.co.kr/1348737&quot; data-og-url=&quot;https://www.dispatch.co.kr/1348737&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Q76rJ/hyKSNBCKK9/bYxfHUp9c6CSDScAHKcDm0/img.jpg?width=1200&amp;amp;height=627&amp;amp;face=0_0_1200_627,https://scrap.kakaocdn.net/dn/YlwAI/hyKTPxOzBg/zikhGPFPfLfS9sUTdctVok/img.png?width=1083&amp;amp;height=602&amp;amp;face=0_0_1083_602,https://scrap.kakaocdn.net/dn/czzh3w/hyKTZAqfeA/udHstJKLMT67nJnhIAyhb0/img.png?width=1083&amp;amp;height=602&amp;amp;face=467_147_646_343&quot;&gt;&lt;a href=&quot;https://www.dispatch.co.kr/1348737&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.dispatch.co.kr/1348737&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Q76rJ/hyKSNBCKK9/bYxfHUp9c6CSDScAHKcDm0/img.jpg?width=1200&amp;amp;height=627&amp;amp;face=0_0_1200_627,https://scrap.kakaocdn.net/dn/YlwAI/hyKTPxOzBg/zikhGPFPfLfS9sUTdctVok/img.png?width=1083&amp;amp;height=602&amp;amp;face=0_0_1083_602,https://scrap.kakaocdn.net/dn/czzh3w/hyKTZAqfeA/udHstJKLMT67nJnhIAyhb0/img.png?width=1083&amp;amp;height=602&amp;amp;face=467_147_646_343');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;&quot;이케아에서 산 '900원' 유리컵이 갑자기 폭발했어요&quot;&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;세계적으로 유명한 가구업체 '이케아'의 강화 유리컵. 단돈 900원에 판매하고 있어 인기가 높습니다.... [더보기]&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.dispatch.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강화유리가 저렇게 깨질 줄은 상상도 못 했네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용 기간도 1년 좀 넘게 사용했을 뿐이고, 원래는 노트북 책상이라 노트북을 놔두고 사용했으면 노트북까지 망가질 뻔했네요..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 갑자기 와장장 깨지니 이케아 제품을 사용하기가 좀 무섭네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진짜 소리도 소리지만 깨지고 나서 덜 깨진 부분들에서는 전기 합선된 것처럼 지지직 소리가 나면서 서서히 깨지고 있더라고요..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강화유리라고 안심하고 사용하면 안 될 듯합니다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이케아에 문의 글을 올렸더니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 사과문과 함께 2만원 기프티카드를 준다고 하네요....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞으로는 이케아 제품을 사용하기가 무서워서 받을 생각이 없네요.&lt;/p&gt;</description>
      <category>일상</category>
      <category>ikea</category>
      <category>VITTSJ&amp;Ouml; 빗셰</category>
      <category>강화유리</category>
      <category>노트북책상</category>
      <category>빗셰 VITTSJO</category>
      <category>이케아</category>
      <category>자파현상</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/4</guid>
      <comments>https://ak-coding.tistory.com/4#entry4comment</comments>
      <pubDate>Sat, 24 Jul 2021 16:42:39 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] lastIndexOf() 특정 문자 위치 찾기 - 자바스크립트</title>
      <link>https://ak-coding.tistory.com/2</link>
      <description>&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;String.lastIndexOf()&lt;/h2&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;indexOf()와 동일하게 문자열에서 원하는 문자의 위치를 찾거나 배열에서 배열값의 위치를 확인하는 방법으로 lastIndexOf() 함수가 사용된다.&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;indexOf()와 차이점&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;fromIndex로부터 &lt;u&gt;역순(오른쪽에서 왼쪽)으로 탐색&lt;/u&gt;을 시작하여 searchValue가 &lt;u&gt;처음 탐색되는 index를 반환&lt;/u&gt;한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 탐색만 역순으로 할 뿐 반환값은 indexOf()와 동일하게 앞쪽부터의 index이다.&lt;/p&gt;
&lt;figure id=&quot;og_1627066090233&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;indexOf() 특정 문자 위치 찾기 - 자바스크립트[JavaScript]&quot; data-og-description=&quot;String.indexOf() 문자열에서 원하는 문자의 위치를 찾거나 배열에서는 배열값의 존재 여부를 확인하는 방법으로 indexOf() 함수가 사용된다. 문법(Syntax) str.indexOf(searchValue[,&amp;nbsp;fromIndex]) searchValue가..&quot; data-og-host=&quot;ak-coding.tistory.com&quot; data-og-source-url=&quot;https://ak-coding.tistory.com/1&quot; data-og-url=&quot;https://ak-coding.tistory.com/1&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/OJubU/hyKZkswLFn/kwAPyKRlVQs3O8fh86kjsK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/zMrZ5/hyKZ1x7has/MRkdtHJxJDlzxxF9kmHCgK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/KYmKI/hyKY6HOP8A/gc0TXOLTUeVzKHlnHdAMQ0/img.jpg?width=428&amp;amp;height=428&amp;amp;face=0_0_428_428&quot;&gt;&lt;a href=&quot;https://ak-coding.tistory.com/1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ak-coding.tistory.com/1&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/OJubU/hyKZkswLFn/kwAPyKRlVQs3O8fh86kjsK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/zMrZ5/hyKZ1x7has/MRkdtHJxJDlzxxF9kmHCgK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/KYmKI/hyKY6HOP8A/gc0TXOLTUeVzKHlnHdAMQ0/img.jpg?width=428&amp;amp;height=428&amp;amp;face=0_0_428_428');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;indexOf() 특정 문자 위치 찾기 - 자바스크립트[JavaScript]&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;String.indexOf() 문자열에서 원하는 문자의 위치를 찾거나 배열에서는 배열값의 존재 여부를 확인하는 방법으로 indexOf() 함수가 사용된다. 문법(Syntax) str.indexOf(searchValue[,&amp;nbsp;fromIndex]) searchValue가..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ak-coding.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;str.lastIndexOf(searchValue[, fromIndex])&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;fromIndex로부터 역순으로 탐색하여 최초의 index를 반환하고 존재하지 않으면 -1을 반환한다.&lt;/li&gt;
&lt;li&gt;문자열을 탐색할 때 대소문자를 구분한다.&lt;/li&gt;
&lt;li&gt;배열에서도 사용 가능하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;매개변수(parameter)&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;1. searchValue&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;탐색할 문자열&lt;/li&gt;
&lt;li&gt;빈 값인 경우 fromIndex(+Infinity) 반환한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1626022323221&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello world';
str.lastIndexOf('l'); // 9
str.lastIndexOf('L'); // -1
str.lastIndexOf('a'); // -1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열과 index를 매칭 하면 아래와 같다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 38px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th colspan=&quot;12&quot;&gt;문자열: hello world&lt;/th&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;h&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;e&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;l&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.60465%;&quot;&gt;l&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.95349%;&quot;&gt;o&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;공백&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 9.53488%;&quot;&gt;w&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.95349%;&quot;&gt;o&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;r&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.60465%;&quot;&gt;l&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 11.6279%;&quot;&gt;d&lt;/th&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.60465%;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.95349%;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 9.53488%;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.95349%;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.60465%;&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 11.6279%;&quot;&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;searchValue가 없으므로 문자열 전체를 기준으로 탐색하여 우측에서 첫번째로 존재하는 'l'의 index는 9이므로 9를 반환한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;대문자 'L'과 'a'는 문자열에 존재하지 않으므로 -1을 반환한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;2. fromIndex(optional)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기본값은 +Infinity이다.&lt;/li&gt;
&lt;li&gt;fromIndex가 문자열보다 큰 경우 모든 문자열을 탐색한다.&lt;/li&gt;
&lt;li&gt;fromIndex가 음수인 경우 0을 지정한 것과 동일하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1626022353206&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello world';
str.lastIndexOf('l', 2); // 2
str.lastIndexOf('l', 3); // 3
str.lastIndexOf('l', 10); // 9&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fromIndex가 2이므로 str의 index 2(hel)부터 역순으로 탐색한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;탐색 결과에 문자열 'l'이 존재하고, 'l'의 index는 2이니 2를 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마찬가지로 fromIndex가 3인경우 문자열 'hell'에서 'l'을 탐색하여 index 3을 반환한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;배열의 경우 배열 index를 반환&lt;span style=&quot;color: #333333; font-size: 16px; letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1625641828131&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let arr = ['apple', 'banana', 'orange', 'banana'];
arr.lasrIndexOf('banana', 2); // 1&lt;/code&gt;&lt;/pre&gt;</description>
      <category>JavaScript</category>
      <category>JavaScript</category>
      <category>lastindexof</category>
      <category>lastIndexOf()</category>
      <category>문자 위치</category>
      <category>문자열 함수</category>
      <category>자바스크립트</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/2</guid>
      <comments>https://ak-coding.tistory.com/2#entry2comment</comments>
      <pubDate>Sat, 24 Jul 2021 16:05:04 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] indexOf() 특정 문자 위치 찾기 - 자바스크립트</title>
      <link>https://ak-coding.tistory.com/1</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;String.indexOf()&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열에서 원하는 문자의 위치를 찾거나 배열에서는 배열 값의 존재 여부를 확인하는 방법으로 indexOf() 함수가 사용된다.&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문법(Syntax)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;str.indexOf(searchValue[,&amp;nbsp;fromIndex])&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #212121;&quot;&gt;searchValue가 &lt;u&gt;처음으로 탐색되는&amp;nbsp;index를 반환&lt;/u&gt;하고 존재하지 않으면 -1을 반환한다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;문자열을 찾을 때는 &lt;u&gt;대소문자를 구분&lt;/u&gt;한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;배열에서도 사용 가능하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;매개변수(Parameter)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. searchValue&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;찾으려는 문자열&lt;/li&gt;
&lt;li&gt;아무값도 주어지지 않으면 'undefined'를 찾으려는 문자열로 사용한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1625633079770&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello world';
str.indexOf('e'); // 1
str.indexOf('E'); // -1
str.indexOf('a'); // -1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열과 index를 매칭 하면 아래와 같다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 38px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th colspan=&quot;12&quot;&gt;문자열: hello world&lt;/th&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;h&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;e&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;l&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.60465%;&quot;&gt;l&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.95349%;&quot;&gt;o&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;공백&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 9.53488%;&quot;&gt;w&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.95349%;&quot;&gt;o&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.72093%;&quot;&gt;r&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 8.60465%;&quot;&gt;l&lt;/th&gt;
&lt;th style=&quot;height: 19px; width: 11.6279%;&quot;&gt;d&lt;/th&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.60465%;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.95349%;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 9.53488%;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.95349%;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.72093%;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 8.60465%;&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 11.6279%;&quot;&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열에서 'e'가 존재하는 index는 1이므로 1을 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대문자 'E'와 'a'는 문자열에 존재하지 않으므로 -1을 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. fromIndex(optional)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열에서 탐색하기 시작하는 위치로 기본값은 0이다.&lt;/li&gt;
&lt;li&gt;fromIndex의 값이 양의 정수이면 해당 index부터 찾는다.&lt;/li&gt;
&lt;li&gt;fromIndex의 값이 음의 정수이면 전체 문자열에서 찾는다.(기본값과 동일)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1625634000579&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;lex str = 'hello world';
str.indexOf('o', 4); // 4
str.indexOf('o', 5); // 7
str.indexOf('o', -10); // 4&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;fromIndex값이 4이므로 str의 index 4(o wolrd)부터 'o'를 탐색한다.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;탐색한 'o'의 실제 index인 4를 반환한다.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;마찬가지로 fromIndex 5는 (공백) world부터 탐색하여 hello에 있는 'o'는 무시하고 world에 있는 'o'를 탐색하여 7을 반환한다.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;fromIndex값이 음수인 경우는 기본값인 0을 기준으로 문자열 전체를 탐색하여 4를 반환한다.&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;문자열 내의 특정 문자가 있는지 확인하는 방법&lt;/h3&gt;
&lt;pre id=&quot;code_1625636972977&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello world';
if(str.indexOf('h') !== -1) {
  console.log('true');
} else {
  console.log('false');
}
// true&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열에 'h'가 있으면 'true'를 없으면 'false'를 표시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요소를 찾을 수 없는 경우 반환하는 -1을 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 내의 특정 문자 개수 구하기&lt;/h3&gt;
&lt;pre id=&quot;code_1625637791030&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello world';
function getIndexOfNum(str, searchValue) {
  let count = 0;
  let pos = str.indexOf(searchValue);
  while(pos !== -1) {
    pos = str.indexOf(searchValue, pos + 1);
    count++;
  }
  return count;
}
getIndexOfNum(str, o); // 2
getIndexOfNum(str, l); // 3&lt;/code&gt;&lt;/pre&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;두 번째 매개변수의 index를 찾아 변수 pos 대입한다.&lt;/li&gt;
&lt;li&gt;while문에서 pos가 -1이 아니면 pos에 1을 더한 값을 fromIndex값에 대입하여 그다음 값을 반복적으로 찾는다.&lt;/li&gt;
&lt;li&gt;count를 0에서부터 증가시킨다.&lt;/li&gt;
&lt;li&gt;매개변수 searchValue가 더이상 문자열에 존재하지 않으면 while문을 종료시킨다.&lt;/li&gt;
&lt;li&gt;count의 값을 반환한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 문자열에는 'o'가 2개 'l'은 3개가 존재한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열의 n번째 위치 index값 가져오기&lt;/h3&gt;
&lt;pre id=&quot;code_1625724699387&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello wolrd hello wolrd';
function getIndexOfPos(str, searchValue, nth) {
  let count = 0;
  let pos = 0;
  while(count &amp;lt; nth &amp;amp;&amp;amp; pos !== 1) {
    if(str.indexOf(searchValue) === 0) {
      if(nth === 1) {
        pos = 1;
        break;
      }
      count = 1;
    }
    pos = str.indexOf(searchValue, pos + 1);
    count++;
  }
  return pos;
}
getIndexOfPos(str, 'h' 2); // 12
getIndexOfPos(str, 'h' 1); // 1&lt;/code&gt;&lt;/pre&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;while문의 count가 nth(찾고자 하는 n번째 위치) 보다 작거나 없는 경우까지 실행&lt;/li&gt;
&lt;li&gt;str.indexOf(searchValue)가 0인 경우 예외처리(뒤 구문에서 fromIndex에 pos + 1을 연산하여 fromIndex가 0인 경우는 제외가 되기 때문)&lt;br /&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;nth가 1이면 pos에 1을 대입 후 while문 종료 후 &amp;nbsp;pos 값 반환&lt;/li&gt;
&lt;li&gt;count 변수에 1을 대입하여 index가 0 다음부터 searchValue 검색 시작 후 pos 값을 반환&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;pos에 1을 더한 값을 fromIndex값에 대입하여 그 다음 값을 반복적으로 찾는다.&lt;/li&gt;
&lt;li&gt;count가 nth보다 작아지거나&amp;nbsp;매개변수 searchValue가 더 이상 문자열에 존재하지 않으면 while문을 종료시킨다.&lt;/li&gt;
&lt;li&gt;pos 값을 반환한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열에 있는 특정 문자 위치 모두 찾기&lt;/h3&gt;
&lt;pre id=&quot;code_1625648533626&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let str = 'hello world'(
function getIndexOfPosFind(str, searchValue) {
  let pos = 0;
  while(true) {
    let posFind = str.indexOf(searchValue, pos);
    if(posFind === -1) break;
    console.log(posFind);
    pos = posFind + 1;
  }
}
getOndexOfPosFind(str, 'l'); // 2, 3, 9&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;워와 같이도 사용할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;배열의 경우 배열 index를 반환&lt;/h3&gt;
&lt;pre id=&quot;code_1625641828131&quot; class=&quot;language-javascript&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let arr = ['apple', 'banana', 'orange'];
arr.indexOf('banana'); // 1&lt;/code&gt;&lt;/pre&gt;
&lt;figure id=&quot;og_1627066186177&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;lastIndexOf() 특정 문자 위치 찾기 - 자바스크립트[JavaScript]&quot; data-og-description=&quot;String.lastIndexOf() indexOf()와 동일하게 문자열에서 원하는 문자의 위치를 찾거나 배열에서 배열값의 위치를 확인하는 방법으로 lastIndexOf() 함수가 사용된다. indexOf()와 차이점 fromIndex로부터 역순(오.&quot; data-og-host=&quot;ak-coding.tistory.com&quot; data-og-source-url=&quot;https://ak-coding.tistory.com/2&quot; data-og-url=&quot;https://ak-coding.tistory.com/2&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/YGUUu/hyKZhigXBC/uO78oxbp29UZ7N8ksN6CtK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Zemck/hyKZZUB24G/LEqL7cI5XZQ68F3AnWTC50/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/ceYazi/hyKZgRao95/bDs7Jq0fCFDE4CccRPZU50/img.jpg?width=428&amp;amp;height=428&amp;amp;face=0_0_428_428&quot;&gt;&lt;a href=&quot;https://ak-coding.tistory.com/2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ak-coding.tistory.com/2&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/YGUUu/hyKZhigXBC/uO78oxbp29UZ7N8ksN6CtK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Zemck/hyKZZUB24G/LEqL7cI5XZQ68F3AnWTC50/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/ceYazi/hyKZgRao95/bDs7Jq0fCFDE4CccRPZU50/img.jpg?width=428&amp;amp;height=428&amp;amp;face=0_0_428_428');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;lastIndexOf() 특정 문자 위치 찾기 - 자바스크립트[JavaScript]&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;String.lastIndexOf() indexOf()와 동일하게 문자열에서 원하는 문자의 위치를 찾거나 배열에서 배열값의 위치를 확인하는 방법으로 lastIndexOf() 함수가 사용된다. indexOf()와 차이점 fromIndex로부터 역순(오.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ak-coding.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>JavaScript</category>
      <category>indexof</category>
      <category>indexOf()</category>
      <category>JavaScript</category>
      <category>문자 위치</category>
      <category>문자열 위치</category>
      <category>문자열 함수</category>
      <category>자바스크립트</category>
      <author>MaCoder</author>
      <guid isPermaLink="true">https://ak-coding.tistory.com/1</guid>
      <comments>https://ak-coding.tistory.com/1#entry1comment</comments>
      <pubDate>Sat, 24 Jul 2021 10:45:34 +0900</pubDate>
    </item>
  </channel>
</rss>