<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>1Q74</title>
    <link>https://1q74.tistory.com/</link>
    <description>어디로 갈 지 몰라 헤멘 날도, 너무 아파 잠 못 들던 밤도 여전히 나는 기억하고 있어.</description>
    <language>ko</language>
    <pubDate>Sun, 26 Jul 2026 12:20:48 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>1Q74</managingEditor>
    <image>
      <title>1Q74</title>
      <url>https://tistory1.daumcdn.net/tistory/6104241/attach/7451aee7b57e45f0b7e0f3c95e0a31cf</url>
      <link>https://1q74.tistory.com</link>
    </image>
    <item>
      <title>【CSS/Cookbook】How are the display values ​​different between block and inline block?</title>
      <link>https://1q74.tistory.com/91</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Description&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;display: block와 display: inline-block간의 차이를 알아본다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Example&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;[Click Me]버튼을 클릭할 때마다 display의 값이 block, inline-block으로 토글된다.&lt;/p&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;

&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] css/fieldset&lt;/title&gt;
&lt;style&gt;
fieldset#_1q74-example-container {
	border: solid 1px;
	border-style: dotted;
	padding: 10px;
}

div[name=&quot;_1q74-example-1&quot;] {
	background: green;
	width: 100px;
	height: 100px;
	display: inline-block;
}

div[name=&quot;_1q74-example-2&quot;] {
	background: lightgreen;
	width: 100px;
	height: 100px;
	display: inline-block;
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;fieldset id=&quot;_1q74-example-container&quot;&gt;
		&lt;legend&gt;Div Boxes&lt;/legend&gt;

		&lt;div name=&quot;_1q74-example-1&quot;&gt;
			inline-block
		&lt;/div&gt;
		&lt;div name=&quot;_1q74-example-2&quot;&gt;
			inline-block
		&lt;/div&gt;
	&lt;/fieldset&gt;

	&lt;br/&gt;
	&lt;button id=&quot;btn-1q74-example&quot;&gt;Click Me&lt;/button&gt;

&lt;script&gt;
const btn = document.getElementById(&quot;btn-1q74-example&quot;);

btn.addEventListener(&quot;click&quot;, function() {
	const examples = document.querySelectorAll(&quot;[name*=_1q74-example-]&quot;);

	examples.forEach(example =&gt; {
		const display = example.style.display;
		const isBlock = display == &quot;block&quot;;

		let block = &quot;&quot;;
		if(isBlock) {
			block = &quot;inline-block&quot;;
		} else {
			block = &quot;block&quot;;
		}

		example.style.display = block;
		example.textContent = block;
	});
});
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. Code&lt;/h3&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1684914923782&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&amp;gt;

&amp;lt;!doctype html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;utf-8&quot;&amp;gt;
&amp;lt;title&amp;gt;[1q74.tistory.com] css/fieldset&amp;lt;/title&amp;gt;
&amp;lt;style&amp;gt;
fieldset#_1q74-example-container {
	border: solid 1px;
	border-style: dotted;
	padding: 10px;
}

div[name=&quot;_1q74-example-1&quot;] {
	background: green;
	width: 100px;
	height: 100px;
	display: inline-block;
}

div[name=&quot;_1q74-example-2&quot;] {
	background: lightgreen;
	width: 100px;
	height: 100px;
	display: inline-block;
}
&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
	&amp;lt;fieldset id=&quot;_1q74-example-container&quot;&amp;gt;
		&amp;lt;legend&amp;gt;Div Boxes&amp;lt;/legend&amp;gt;

		&amp;lt;div name=&quot;_1q74-example-1&quot;&amp;gt;
			inline-block
		&amp;lt;/div&amp;gt;
		&amp;lt;div name=&quot;_1q74-example-2&quot;&amp;gt;
			inline-block
		&amp;lt;/div&amp;gt;
	&amp;lt;/fieldset&amp;gt;

	&amp;lt;br/&amp;gt;
	&amp;lt;button id=&quot;btn-1q74-example&quot;&amp;gt;Click Me&amp;lt;/button&amp;gt;

&amp;lt;script&amp;gt;
const btn = document.getElementById(&quot;btn-1q74-example&quot;);

btn.addEventListener(&quot;click&quot;, function() {
	const examples = document.querySelectorAll(&quot;[name*=_1q74-example-]&quot;);

	examples.forEach(example =&amp;gt; {
		const display = example.style.display;
		const isBlock = display == &quot;block&quot;;

		let block = &quot;&quot;;
		if(isBlock) {
			block = &quot;inline-block&quot;;
		} else {
			block = &quot;block&quot;;
		}

		example.style.display = block;
		example.textContent = block;
	});
});
&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. File&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/chMESh/btshhFMuF27/hLGM9jzSYULkphcHfUoYu0/%5Bcss%5D%5Bdiv%5D%5Bdisplay%5Dexample.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[css][div][display]example.html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>CSS/Cookbook</category>
      <category>Block</category>
      <category>CSS</category>
      <category>Display</category>
      <category>inline-block</category>
      <author>1Q74</author>
      <guid isPermaLink="true">https://1q74.tistory.com/91</guid>
      <comments>https://1q74.tistory.com/91#entry91comment</comments>
      <pubDate>Wed, 24 May 2023 16:56:13 +0900</pubDate>
    </item>
    <item>
      <title>【CSS/Cookbook】&amp;lt;fieldset&amp;gt;, &amp;lt;legend&amp;gt; (Group으로 묶어서 표시하기)</title>
      <link>https://1q74.tistory.com/90</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Description&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;fieldset&amp;gt;는 Element들을 Group으로 묶고, &amp;lt;legend&amp;gt;로 그룹명을 넣는다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Example&lt;/h3&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;

&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] css/fieldset&lt;/title&gt;
&lt;style&gt;
fieldset#_1q74-example-container {
	border: solid 1px;
	border-style: dotted;
	padding: 10px;
}

div[name=&quot;_1q74-example-1&quot;] {
	background: green;
	width: 100px;
	height: 100px;
	display: inline-block;
}

div[name=&quot;_1q74-example-2&quot;] {
	background: lightgreen;
	width: 100px;
	height: 100px;
	display: inline-block;
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;fieldset id=&quot;_1q74-example-container&quot;&gt;
		&lt;legend&gt;Div Boxes&lt;/legend&gt;
		&lt;div name=&quot;_1q74-example-1&quot;&gt;
			box#1
		&lt;/div&gt;
		&lt;div name=&quot;_1q74-example-2&quot;&gt;
			box#2
		&lt;/div&gt;
	&lt;/fieldset&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. Code&lt;/h3&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1684911560111&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&amp;gt;

&amp;lt;!doctype html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;utf-8&quot;&amp;gt;
&amp;lt;title&amp;gt;[1q74.tistory.com] css/fieldset&amp;lt;/title&amp;gt;
&amp;lt;style&amp;gt;
fieldset#_1q74-example-container {
	border: solid 1px;
	border-style: dotted;
	padding: 10px;
}

div[name=&quot;_1q74-example-1&quot;] {
	background: green;
	width: 100px;
	height: 100px;
	display: inline-block;
}

div[name=&quot;_1q74-example-2&quot;] {
	background: lightgreen;
	width: 100px;
	height: 100px;
	display: inline-block;
}
&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
	&amp;lt;fieldset id=&quot;_1q74-example-container&quot;&amp;gt;
		&amp;lt;legend&amp;gt;Div Boxes&amp;lt;/legend&amp;gt;
		&amp;lt;div name=&quot;_1q74-example-1&quot;&amp;gt;
			box#1
		&amp;lt;/div&amp;gt;
		&amp;lt;div name=&quot;_1q74-example-2&quot;&amp;gt;
			box#2
		&amp;lt;/div&amp;gt;
	&amp;lt;/fieldset&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. File&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bTIfkL/btshb7wduxF/LM2ok4EOBGMBOObOwME4I1/%5Bcss%5D%5Bfieldset%5Dexample.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[css][fieldset]example.html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. See also&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset&lt;/a&gt;&lt;/p&gt;</description>
      <category>CSS/Cookbook</category>
      <category>fieldset</category>
      <category>legend</category>
      <author>1Q74</author>
      <guid isPermaLink="true">https://1q74.tistory.com/90</guid>
      <comments>https://1q74.tistory.com/90#entry90comment</comments>
      <pubDate>Wed, 24 May 2023 16:01:11 +0900</pubDate>
    </item>
    <item>
      <title>【Go/Cookbook】Send Email in golang(feat. Gmail) Go언어에서 이메일 전송하기</title>
      <link>https://1q74.tistory.com/89</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Description&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; Go언어에서 이메일 전송하는 예제입니다. 본 예제에서는 Gmail의 smtp서버를 이용합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2. Prerequisite&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;다음과 같은 모듈이 필요합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1684908379238&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import (
	&quot;crypto/tls&quot;
	&quot;fmt&quot;

	gomail &quot;github.com/go-mail/mail&quot;
)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. Example&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Gmail의 smtp서버를 통해 메일을 전송합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1684908615894&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package mail

import (
	&quot;crypto/tls&quot;
	&quot;fmt&quot;

	gomail &quot;github.com/go-mail/mail&quot;
)

type Mail struct {
}

type SmtpServer struct {
	host string
	port int
}

type Account struct {
	email    string
	password string
}

type Message struct {
	Subject string
	Msg     string
}

var mail = &amp;amp;Mail{}
var smtpServer = &amp;amp;SmtpServer{
	host: &quot;smtp.gmail.com&quot;,
	port: 587,
}
var account = &amp;amp;Account{
	email:    &quot;Gmail주소&quot;,
	password: &quot;Gmail 앱 비밀번호&quot;,
}

var to = []string{
	&quot;받는사람 이메일 주소#1&quot;,
	&quot;받는사람 이메일 주소#2&quot;,
}

func NewMail() *Mail {
	return mail
}

func (*Mail) Send(message Message) {
	gm := gomail.NewMessage()
	gm.SetHeader(&quot;From&quot;, account.email)
	gm.SetHeader(&quot;To&quot;, to...)
	gm.SetHeader(&quot;Subject&quot;, message.Subject)
	gm.SetBody(&quot;text/html&quot;, message.Msg)

	dialer := gomail.NewDialer(smtpServer.host, smtpServer.port, account.email, account.password)
	dialer.TLSConfig = &amp;amp;tls.Config{InsecureSkipVerify: true}

	if err := dialer.DialAndSend(gm); err != nil {
		fmt.Println(err)
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. See also&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://support.google.com/mail/answer/185833?hl=ko&quot;&gt;https://support.google.com/mail/answer/185833?hl=ko&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1684908664040&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;앱 비밀번호로 로그인 - Gmail 고객센터&quot; data-og-description=&quot;도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요&quot; data-og-host=&quot;support.google.com&quot; data-og-source-url=&quot;https://support.google.com/mail/answer/185833?hl=ko&quot; data-og-url=&quot;https://support.google.com/mail/answer/185833?hl=ko&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://support.google.com/mail/answer/185833?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://support.google.com/mail/answer/185833?hl=ko&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;앱 비밀번호로 로그인 - Gmail 고객센터&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;support.google.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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Go/Cookbook</category>
      <category>go</category>
      <category>golang</category>
      <category>Send Email</category>
      <author>1Q74</author>
      <guid isPermaLink="true">https://1q74.tistory.com/89</guid>
      <comments>https://1q74.tistory.com/89#entry89comment</comments>
      <pubDate>Wed, 24 May 2023 15:12:22 +0900</pubDate>
    </item>
    <item>
      <title>【jQuery/Traversing】addBack([selector])</title>
      <link>https://1q74.tistory.com/88</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Description&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;.addBack([selector])&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;selector에 의해서 필터링 된 Element들 중에서, 현재 선택한 Element의 스택상에 이전 Element를 추가한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Example&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#1버튼을 클릭하면 &amp;lt;ol&amp;gt;Element와 li:eq(2)를 선택하여 border스타일을 변경한다. 버튼을 클릭할 때마다 해당 스타일이 토글된다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;
&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] javascript/jquery/traversing/addBack([selector])&lt;/title&gt;
&lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

	&lt;div name=&quot;_1q74-ex-root&quot;&gt;
		&lt;div name=&quot;_1q74-ex-1&quot;&gt;
			&lt;ol name=&quot;bigtech&quot;&gt;
				&lt;li&gt;Google&lt;/li&gt;
				&lt;li&gt;Amazon&lt;/li&gt;
				&lt;li&gt;Facebook&lt;/li&gt;
				&lt;ol&gt;
					&lt;li&gt;Tesla&lt;/li&gt;
					&lt;li&gt;Twitter&lt;/li&gt;
					&lt;li&gt;Netflex&lt;/li&gt;
				&lt;/ol&gt;
				&lt;li&gt;Apple&lt;/li&gt;
			&lt;/ol&gt;
		&lt;/div&gt;

		&lt;br/&gt;

		&lt;div name=&quot;_1q74-ex-bottom&quot;&gt;
			&lt;table border=&quot;1&quot;&gt;
				&lt;tr&gt;
					&lt;td colspan=&quot;2&quot;&gt;
						&lt;button name=&quot;btn-find&quot;&gt;
							#1. Click Me
						&lt;/button&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
			&lt;/table&gt;
		&lt;/div&gt;
	&lt;/div&gt;

&lt;script&gt;
//
// _1q74 is a Namespace for preventing confliction of variable.
// It has not mean specially.
//
var _1q74 = {};
_1q74.example = {
	/////////////////////////////////////////////////////////////////
	//
	// Example container
	//
	/////////////////////////////////////////////////////////////////
	container: $(&quot;[name='_1q74-ex-1']&quot;),

	/////////////////////////////////////////////////////////////////
	//
	// Execute example
	//
	/////////////////////////////////////////////////////////////////
	execute: function() {
		const _this = this;
		const btnFind = $(&quot;[name='btn-find']&quot;);
		const bigtech = _this.container.find(&quot;[name='bigtech']&quot;);
		const elements = bigtech.find(&quot;ol&quot;).find(&quot;li:eq(2)&quot;).addBack();

		btnFind.click(&quot;click&quot;, function() {
			if(!elements.is(&quot;[style]&quot;)) {
				elements.css(&quot;border&quot;, &quot;1px dotted lightgreen&quot;);
			} else {
				elements.removeAttr(&quot;style&quot;);
			}
		});
	},
}

_1q74.example.execute();
&lt;/script&gt;
&lt;style&gt;
[name=&quot;_1q74-ex-root&quot;] {
	min-height: 200px;
}

[name=&quot;_1q74-ex-1&quot;] {
	min-height: 170px;
}

[name=&quot;_1q74-ex-bottom&quot;] {
	min-height: 150px;
}

[name=&quot;_1q74-ex-1&quot;] td {
	min-width: 30px;
	min-height: 30px;
	width: 120px;
}

[name=&quot;_1q74-ex-bottom&quot;] tbody {
	max-width: 400px;
}

[name=&quot;_1q74-ex-bottom&quot;] td {
	width: 300px;
}

[name|=&quot;_1q74-ex&quot;] button {
	background: lightgray;
	border: 5px outset;
	min-height: 40px;
	width: 100%;
}

[name|=&quot;_1q74-ex&quot;] button:active {
	border: 5px inset;
	min-height: 40px;
	width: 100%;
}
&lt;/style&gt;

&lt;/body&gt;
&lt;/html&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. Code&lt;/h3&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1681368426132&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&amp;gt;
&amp;lt;!doctype html&amp;gt;
&amp;lt;html lang=&quot;ko&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;utf-8&quot;&amp;gt;
&amp;lt;title&amp;gt;[1q74.tistory.com] javascript/jquery/traversing/addBack([selector])&amp;lt;/title&amp;gt;
&amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

	&amp;lt;div name=&quot;_1q74-ex-root&quot;&amp;gt;
		&amp;lt;div name=&quot;_1q74-ex-1&quot;&amp;gt;
			&amp;lt;ol name=&quot;bigtech&quot;&amp;gt;
				&amp;lt;li&amp;gt;Google&amp;lt;/li&amp;gt;
				&amp;lt;li&amp;gt;Amazon&amp;lt;/li&amp;gt;
				&amp;lt;li&amp;gt;Facebook&amp;lt;/li&amp;gt;
				&amp;lt;ol&amp;gt;
					&amp;lt;li&amp;gt;Tesla&amp;lt;/li&amp;gt;
					&amp;lt;li&amp;gt;Twitter&amp;lt;/li&amp;gt;
					&amp;lt;li&amp;gt;Netflex&amp;lt;/li&amp;gt;
				&amp;lt;/ol&amp;gt;
				&amp;lt;li&amp;gt;Apple&amp;lt;/li&amp;gt;
			&amp;lt;/ol&amp;gt;
		&amp;lt;/div&amp;gt;

		&amp;lt;br/&amp;gt;

		&amp;lt;div name=&quot;_1q74-ex-bottom&quot;&amp;gt;
			&amp;lt;table border=&quot;1&quot;&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td colspan=&quot;2&quot;&amp;gt;
						&amp;lt;button name=&quot;btn-find&quot;&amp;gt;
							#1. Click Me
						&amp;lt;/button&amp;gt;
					&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
			&amp;lt;/table&amp;gt;
		&amp;lt;/div&amp;gt;
	&amp;lt;/div&amp;gt;

&amp;lt;script&amp;gt;
//
// _1q74 is a Namespace for preventing confliction of variable.
// It has not mean specially.
//
var _1q74 = {};
_1q74.example = {
	/////////////////////////////////////////////////////////////////
	//
	// Example container
	//
	/////////////////////////////////////////////////////////////////
	container: $(&quot;[name='_1q74-ex-1']&quot;),

	/////////////////////////////////////////////////////////////////
	//
	// Execute example
	//
	/////////////////////////////////////////////////////////////////
	execute: function() {
		const _this = this;
		const btnFind = $(&quot;[name='btn-find']&quot;);
		const bigtech = _this.container.find(&quot;[name='bigtech']&quot;);
		const elements = bigtech.find(&quot;ol&quot;).find(&quot;li:eq(2)&quot;).addBack();

		btnFind.click(&quot;click&quot;, function() {
			if(!elements.is(&quot;[style]&quot;)) {
				elements.css(&quot;border&quot;, &quot;1px dotted lightgreen&quot;);
			} else {
				elements.removeAttr(&quot;style&quot;);
			}
		});
	},
}

_1q74.example.execute();
&amp;lt;/script&amp;gt;
&amp;lt;style&amp;gt;
[name=&quot;_1q74-ex-root&quot;] {
	min-height: 200px;
}

[name=&quot;_1q74-ex-1&quot;] {
	min-height: 170px;
}

[name=&quot;_1q74-ex-bottom&quot;] {
	min-height: 150px;
}

[name=&quot;_1q74-ex-1&quot;] td {
	min-width: 30px;
	min-height: 30px;
	width: 120px;
}

[name=&quot;_1q74-ex-bottom&quot;] tbody {
	max-width: 400px;
}

[name=&quot;_1q74-ex-bottom&quot;] td {
	width: 300px;
}

[name|=&quot;_1q74-ex&quot;] button {
	background: lightgray;
	border: 5px outset;
	min-height: 40px;
	width: 100%;
}

[name|=&quot;_1q74-ex&quot;] button:active {
	border: 5px inset;
	min-height: 40px;
	width: 100%;
}
&amp;lt;/style&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. File&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/dIu4n9/btr91AxxKEU/CbMCmzGVqXQhzAKTGHh6Ek/%5Bjavascript%5D%5Bjquery%5D%5Btraversing%5DaddBack.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[javascript][jquery][traversing]addBack.html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. Reference&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://api.jquery.com/addBack/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://api.jquery.com/addBack/&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>JavaScript/jQuery</category>
      <category>addback</category>
      <category>jQuery</category>
      <category>traversing</category>
      <author>1Q74</author>
      <guid isPermaLink="true">https://1q74.tistory.com/88</guid>
      <comments>https://1q74.tistory.com/88#entry88comment</comments>
      <pubDate>Thu, 13 Apr 2023 15:36:06 +0900</pubDate>
    </item>
    <item>
      <title>【jQuery/Traversing】.add(selector)</title>
      <link>https://1q74.tistory.com/87</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Description&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1&amp;nbsp;+&amp;nbsp;1&amp;nbsp;+&amp;nbsp;1&amp;nbsp;+&amp;nbsp;...&amp;nbsp;+&amp;nbsp;1과&amp;nbsp;같은&amp;nbsp;개념이다.&amp;nbsp;매칭되는&amp;nbsp;Element를&amp;nbsp;단지&amp;nbsp;선택만&amp;nbsp;해&amp;nbsp;주는&amp;nbsp;메소드이다. &lt;br /&gt;선택된 Element들의 CSS를 변경하거나 하는 등의 조작을 하지 않는다면 아무 변화도 일어나지 않는다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;b&gt;.add(selector)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;매칭된&amp;nbsp;Element들에&amp;nbsp;문자열로&amp;nbsp;표현된&amp;nbsp;selector를&amp;nbsp;추가적으로&amp;nbsp;선택한다.&lt;br /&gt;&amp;rarr; #10, 11버튼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;b&gt;.add(elements)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;매칭된&amp;nbsp;Element들에&amp;nbsp;하나&amp;nbsp;이상의&amp;nbsp;Element를&amp;nbsp;추가적으로&amp;nbsp;선택한다.&lt;br /&gt;&amp;rarr; #20, 21버튼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;b&gt;.add(html)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;매칭된&amp;nbsp;Element들에&amp;nbsp;html을&amp;nbsp;추가적으로&amp;nbsp;선택한다.&lt;br /&gt;&amp;rarr; #30, 31버튼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;b&gt;.add(selection)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;매칭된&amp;nbsp;Element들에&amp;nbsp;jQuery오브젝트를&amp;nbsp;추가적으로&amp;nbsp;선택한다.&lt;br /&gt;&amp;rarr; #40, 41버튼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;b&gt;.add(selector,&amp;nbsp;context)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;context의&amp;nbsp;하위에&amp;nbsp;있는&amp;nbsp;문자열로&amp;nbsp;표현된&amp;nbsp;selector를&amp;nbsp;추가적으로&amp;nbsp;선택한다.&lt;br /&gt;&amp;rarr; #50버튼&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Example&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#10,20,30,40버튼을 클릭하면 &amp;lt;td&amp;gt;중 짝수 인덱스를 선택하고 배경색을 변경한다.&lt;br /&gt;#11,21,31,41버튼을 클릭하면 &amp;lt;td&amp;gt;중 홀수 인덱스를 선택하고 배경색을 변경한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#3버튼을 클릭하면 1행의 &amp;lt;td&amp;gt;에서 1~2번, 2행의 &amp;lt;td&amp;gt;에서 3~5번을 인덱스를 복사해서 행을 추가한 다음 배경색을 변경한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;pre id=&quot;code_1679556123461&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;this.container = $(&quot;[name='_1q74-ex-1']&quot;);
this.containerElement = this.container[0];

this.selectors = {
    ex10: this.container
            .find(&quot;td[r1]:eq(0)&quot;)
            .add(&quot;td[r1]:eq(2)&quot;)
            .add(&quot;td[r1]:eq(4)&quot;),
    ex11: this.container
            .find(&quot;td[r1]:eq(1)&quot;)
            .add(&quot;td[r1]:eq(3)&quot;)
            .add(&quot;td[r1]:eq(5)&quot;),
    ex20: this.container
            .find(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[0])
            .add(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[2])
            .add(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[4]),
    ex21: this.container
            .find(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[1])
            .add(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[3])
            .add(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[5]),
    ex30: $(&quot;&amp;lt;td r3&amp;gt;3-1&amp;lt;/td&amp;gt;&quot;)
            .add(&quot;&amp;lt;td r3&amp;gt;3-2&amp;lt;/td&amp;gt;&quot;)
            .add(&quot;&amp;lt;td r3&amp;gt;3-3&amp;lt;/td&amp;gt;&quot;)
            .add(&quot;&amp;lt;td r3&amp;gt;3-4&amp;lt;/td&amp;gt;&quot;)
            .add(&quot;&amp;lt;td r3&amp;gt;3-5&amp;lt;/td&amp;gt;&quot;)
            .add(&quot;&amp;lt;td r3&amp;gt;3-6&amp;lt;/td&amp;gt;&quot;),
    ex31: $(&quot;&amp;lt;td r4&amp;gt;4-1&amp;lt;/td&amp;gt;&quot;)
            .add(&quot;&amp;lt;td r4&amp;gt;4-2&amp;lt;/td&amp;gt;&quot;)
            .add(&quot;&amp;lt;td r4&amp;gt;4-3&amp;lt;/td&amp;gt;&quot;)
            .add(&quot;&amp;lt;td r4&amp;gt;4-4&amp;lt;/td&amp;gt;&quot;)
            .add(&quot;&amp;lt;td r4&amp;gt;4-5&amp;lt;/td&amp;gt;&quot;)
            .add(&quot;&amp;lt;td r4&amp;gt;4-6&amp;lt;/td&amp;gt;&quot;),
    ex40: $(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-1&quot;)
            .add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-2&quot;))
            .add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-3&quot;))
            .add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-4&quot;))
            .add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-5&quot;))
            .add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-6&quot;)),
    ex41: $(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-1&quot;)
            .add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-2&quot;))
            .add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-3&quot;))
            .add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-4&quot;))
            .add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-5&quot;))
            .add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-6&quot;)),
    ex50: $(&quot;td:eq(0)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(0)&quot;)
            .add(&quot;td:eq(1)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(0)&quot;)
            .add(&quot;td:eq(2)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(0)&quot;)
            .add(&quot;td:eq(0)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(1)&quot;)
            .add(&quot;td:eq(1)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(1)&quot;)
            .add(&quot;td:eq(2)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(1)&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;
&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] javascript/jquery/traversing/add(selector)&lt;/title&gt;
&lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

	&lt;div name=&quot;_1q74-ex-root&quot;&gt;
		&lt;div name=&quot;_1q74-ex-1&quot;&gt;
			&lt;table name=&quot;_1q74-tbl-ex-1&quot; border=&quot;1&quot;&gt;
				&lt;tbody&gt;
					&lt;tr&gt;
						&lt;td r1&gt;1-1&lt;/td&gt;
						&lt;td r1&gt;1-2&lt;/td&gt;
						&lt;td r1&gt;1-3&lt;/td&gt;
						&lt;td r1&gt;1-4&lt;/td&gt;
						&lt;td r1&gt;1-5&lt;/td&gt;
						&lt;td r1&gt;1-6&lt;/td&gt;
					&lt;/tr&gt;
					&lt;tr&gt;
						&lt;td r2&gt;2-1&lt;/td&gt;
						&lt;td r2&gt;2-2&lt;/td&gt;
						&lt;td r2&gt;2-3&lt;/td&gt;
						&lt;td r2&gt;2-4&lt;/td&gt;
						&lt;td r2&gt;2-5&lt;/td&gt;
						&lt;td r2&gt;2-6&lt;/td&gt;
					&lt;/tr&gt;
				&lt;/tbody&gt;
			&lt;/table&gt;

			&lt;br/&gt;

			&lt;div name=&quot;_1q74-ex-bottom&quot;&gt;
				&lt;table border=&quot;1&quot;&gt;
					&lt;tr&gt;
						&lt;td colspan=&quot;2&quot;&gt;
							&lt;button name=&quot;btn-ex&quot; selector=&quot;ex10&quot;&gt;
								#10. $(&quot;td[r1]:eq(0)&quot;).add(&quot;td[r1]:eq(2)&quot;).add(&quot;td[r1]:eq(4)&quot;)
							&lt;/button&gt;
							&lt;button name=&quot;btn-ex&quot; selector=&quot;ex11&quot;&gt;
								#11. $(&quot;td[r1]:eq(1)&quot;).add(&quot;td[r1]:eq(3)&quot;).add(&quot;td[r1]:eq(5)&quot;)
							&lt;/button&gt;
						&lt;/td&gt;
					&lt;/tr&gt;
					&lt;tr&gt;
						&lt;td colspan=&quot;2&quot;&gt;
							&lt;button name=&quot;btn-ex&quot; selector=&quot;ex20&quot;&gt;
								#20. $(&quot;td[r2][0]&quot;).add(&quot;td[r2][2]&quot;).add(&quot;td[r2][4]&quot;)
							&lt;/button&gt;
							&lt;button name=&quot;btn-ex&quot; selector=&quot;ex21&quot;&gt;
								#21. $(&quot;td[r2][1]&quot;).add(&quot;td[r2][3]&quot;).add(&quot;td[r2][5]&quot;)
							&lt;/button&gt;
						&lt;/td&gt;
					&lt;/tr&gt;
					&lt;tr&gt;
						&lt;td colspan=&quot;2&quot;&gt;
							&lt;button name=&quot;btn-ex&quot; selector=&quot;ex30&quot;&gt;
								#30. $(&quot;&amp;lt;td r3&amp;gt;3-0&amp;lt;/td&amp;gt;&quot;).add(...).add(&quot;&amp;lt;td r3&amp;gt;3-4&amp;lt;/td&amp;gt;&quot;)
							&lt;/button&gt;
							&lt;button name=&quot;btn-ex&quot; selector=&quot;ex31&quot;&gt;
								#31. $(&quot;&amp;lt;td r4&amp;gt;4-1&amp;lt;/td&amp;gt;&quot;).add(...).add(&quot;&amp;lt;td r4&amp;gt;4-5&amp;lt;/td&amp;gt;&quot;)
							&lt;/button&gt;
						&lt;/td&gt;
					&lt;/tr&gt;
					&lt;tr&gt;
						&lt;td colspan=&quot;2&quot;&gt;
							&lt;button name=&quot;btn-ex&quot; selector=&quot;ex40&quot;&gt;
								#40.$(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-0&quot;).add(...).add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-4&quot;))
							&lt;/button&gt;
							&lt;button name=&quot;btn-ex&quot; selector=&quot;ex41&quot;&gt;
								#41.$(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-1&quot;).add(...).add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-5&quot;))
							&lt;/button&gt;
						&lt;/td&gt;
					&lt;/tr&gt;
					&lt;tr&gt;
						&lt;td colspan=&quot;2&quot;&gt;
							&lt;button name=&quot;btn-ex&quot; selector=&quot;ex50&quot;&gt;
								#50.$(&quot;td:eq(0)&quot;, $(&quot;tr:eq(0)&quot;).add(...).add(&quot;td:eq(5)&quot;, $(&quot;tr:eq(1)&quot;)
							&lt;/button&gt;
						&lt;/td&gt;
					&lt;/tr&gt;
					&lt;tr&gt;
						&lt;td&gt;
							&lt;input type=&quot;checkbox&quot; name=&quot;chk-view-src&quot; id=&quot;chk-view-src-1&quot;/&gt;
							&lt;label for=&quot;chk-view-src-1&quot;&gt;View Source&lt;/label&gt;
						&lt;/td&gt;
						&lt;td&gt;
							&lt;button name=&quot;btn-init&quot;&gt;Initialize&lt;/button&gt;
						&lt;/td&gt;
					&lt;/tr&gt;
				&lt;/table&gt;
			&lt;/div&gt;
		&lt;/div&gt;
	&lt;/div&gt;

&lt;script&gt;
//
// _1q74 is a Namespace for preventing confliction of variable.
// It has not mean specially.
//
var _1q74 = {};
_1q74.example1 = {
	/////////////////////////////////////////////////////////////////
	//
	// Initialize container, selector, and the others
	//
	/////////////////////////////////////////////////////////////////
	initialize: function() {
		this.container = $(&quot;[name='_1q74-ex-1']&quot;);
		this.containerElement = this.container[0];

		this.selectors = {
			ex10: this.container
					.find(&quot;td[r1]:eq(0)&quot;)
					.add(&quot;td[r1]:eq(2)&quot;)
					.add(&quot;td[r1]:eq(4)&quot;),
			ex11: this.container
					.find(&quot;td[r1]:eq(1)&quot;)
					.add(&quot;td[r1]:eq(3)&quot;)
					.add(&quot;td[r1]:eq(5)&quot;),
			ex20: this.container
					.find(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[0])
					.add(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[2])
					.add(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[4]),
			ex21: this.container
					.find(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[1])
					.add(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[3])
					.add(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[5]),
			ex30: $(&quot;&lt;td r3&gt;3-1&lt;/td&gt;&quot;)
					.add(&quot;&lt;td r3&gt;3-2&lt;/td&gt;&quot;)
					.add(&quot;&lt;td r3&gt;3-3&lt;/td&gt;&quot;)
					.add(&quot;&lt;td r3&gt;3-4&lt;/td&gt;&quot;)
					.add(&quot;&lt;td r3&gt;3-5&lt;/td&gt;&quot;)
					.add(&quot;&lt;td r3&gt;3-6&lt;/td&gt;&quot;),
			ex31: $(&quot;&lt;td r4&gt;4-1&lt;/td&gt;&quot;)
					.add(&quot;&lt;td r4&gt;4-2&lt;/td&gt;&quot;)
					.add(&quot;&lt;td r4&gt;4-3&lt;/td&gt;&quot;)
					.add(&quot;&lt;td r4&gt;4-4&lt;/td&gt;&quot;)
					.add(&quot;&lt;td r4&gt;4-5&lt;/td&gt;&quot;)
					.add(&quot;&lt;td r4&gt;4-6&lt;/td&gt;&quot;),
			ex40: $(&quot;&lt;td&gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-1&quot;)
					.add($(&quot;&lt;td&gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-2&quot;))
					.add($(&quot;&lt;td&gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-3&quot;))
					.add($(&quot;&lt;td&gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-4&quot;))
					.add($(&quot;&lt;td&gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-5&quot;))
					.add($(&quot;&lt;td&gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-6&quot;)),
			ex41: $(&quot;&lt;td&gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-1&quot;)
					.add($(&quot;&lt;td&gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-2&quot;))
					.add($(&quot;&lt;td&gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-3&quot;))
					.add($(&quot;&lt;td&gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-4&quot;))
					.add($(&quot;&lt;td&gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-5&quot;))
					.add($(&quot;&lt;td&gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-6&quot;)),
			ex50: $(&quot;td:eq(0)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(0)&quot;)
					.add(&quot;td:eq(1)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(0)&quot;)
					.add(&quot;td:eq(2)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(0)&quot;)
					.add(&quot;td:eq(0)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(1)&quot;)
					.add(&quot;td:eq(1)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(1)&quot;)
					.add(&quot;td:eq(2)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(1)&quot;)
		};
		this.chkViewSource = this.container.find(&quot;[name='chk-view-src']&quot;);

		this.saveOriginalHtmlSource();
	},

	saveOriginalHtmlSource: function() {
		const _this = this;

		this.originalElements = {
			r10: this.selectors.ex10,
			r11: this.selectors.ex11,
			r20: this.selectors.ex20,
			r21: this.selectors.ex21,
			r30: this.selectors.ex30,
			r31: this.selectors.ex31,
			r40: this.selectors.ex40,
			r41: this.selectors.ex41,
		};

		this.clonedElements = {};
		$.each(this.originalElements, function(key, el) {
			_this.clonedElements[key] = el.clone();
		});
	},

	getTargetRowForBeingAddedRow: function(rowAttr) {
		const _this = this;

		let defaultRow = this.container.find(&quot;[name='_1q74-tbl-ex-1'] tr:eq(1)&quot;);
		const rowNumber = rowAttr.replaceAll(/[a-z]/g, &quot;&quot;);

		let start = rowNumber - 1;
		let row;

		for(let i = start; i &gt;= 2; i--) {
			row = _this.container.find(&quot;[name='_1q74-tbl-ex-1'] td[r&quot; + i + &quot;]&quot;);
			if(row.length &gt; 0) break;
		}

		return row.parent();
	},
	
	/////////////////////////////////////////////////////////////////
	//
	// Execute example
	//
	/////////////////////////////////////////////////////////////////
	execute: function() {
		const _this = this;
		const btnExecute = this.container.find(&quot;[name='btn-ex']&quot;);

		function appendRow(elements, filter, style, rowAttr) {
			let targetRow;
			let isExists = false;
			let isStyled = false;

			const existElements = _this.container.find(&quot;[name='_1q74-tbl-ex-1'] td[&quot; + rowAttr + &quot;]&quot;);
			isExists = existElements.length &gt; 0;
			isStyled = existElements.is(&quot;[style]&quot;);

			if(isExists &amp;&amp; isStyled) return false;

			if(isExists &amp;&amp; !isStyled) {
				elements.filter(filter).css(style);
				return true;
			} else {
				elements.filter(filter).css(style);
				targetRow = _this.getTargetRowForBeingAddedRow(rowAttr);
				targetRow.after($(&quot;&lt;tr&gt;&quot;).append(elements));
			}

			return true;
		}

		function change(selector, elements) {
			let targetRow;
			let isExists = false;

			switch(selector) {
				case &quot;ex10&quot;:
					elements.css({ background: &quot;#1FEC99&quot; });
					break;

				case &quot;ex11&quot;:
					elements.css({ background: &quot;#81C0E8&quot; });
					break;

				case &quot;ex20&quot;:
					elements.css({ background: &quot;#8434A4&quot; });
					break;

				case &quot;ex21&quot;:
					elements.css({ background: &quot;#34A485&quot; });
					break;

				case &quot;ex30&quot;:
					if(!appendRow(elements, &quot;:even&quot;, { background: &quot;#8B71F3&quot; }, &quot;r3&quot;)) {
						return false;
					}
					break;

				case &quot;ex31&quot;:
					if(!appendRow(elements, &quot;:odd&quot;, { background: &quot;#FF5733&quot; }, &quot;r4&quot;)) {
						return false;
					}
					break;

				case &quot;ex40&quot;:
					if(!appendRow(elements, &quot;:even&quot;, { background: &quot;#DEA85F&quot; }, &quot;r5&quot;)) {
						return false;
					}
					break;

				case &quot;ex41&quot;:
					if(!appendRow(elements, &quot;:odd&quot;, { background: &quot;#6C7908&quot; }, &quot;r6&quot;)) {
						return false;
					}
					break;

				case &quot;ex50&quot;:
					const existElements = _this.container.find(&quot;[name='_1q74-tbl-ex-1'] td[r7]&quot;);
					isExists = existElements.length &gt; 0;
					isStyled = existElements.is(&quot;[style]&quot;);

					if(isExists &amp;&amp; isStyled) return;

					if(isExists &amp;&amp; !isStyled) {
						existElements.filter(&quot;:lt(3)&quot;).css({ background: &quot;#89979A&quot; });
						existElements.filter(&quot;:gt(2)&quot;).css({ background: &quot;#D43E68&quot; });
						return;
					} else {
						const clonedElements = elements.clone();
						clonedElements.removeAttr(&quot;r1&quot;).removeAttr(&quot;r2&quot;).attr(&quot;r7&quot;, &quot;&quot;);
				
						if(typeof _this.originalElements[&quot;r50&quot;] == 'undefined') {
							_this.originalElements[&quot;r50&quot;] = clonedElements;
							_this.clonedElements[&quot;r50&quot;] = _this.originalElements[&quot;r50&quot;].clone();
						}

						clonedElements.filter(&quot;:lt(3)&quot;).css({ background: &quot;#89979A&quot; });
						clonedElements.filter(&quot;:gt(2)&quot;).css({ background: &quot;#D43E68&quot; });
						targetRow = _this.getTargetRowForBeingAddedRow(&quot;r7&quot;);
						targetRow.after($(&quot;&lt;tr&gt;&quot;).append(clonedElements));
					}

					break;
			}

			_this.refreshSourceView();
		}

		btnExecute.click(function() {
			const selector = $(this).attr(&quot;selector&quot;);
			const elements = _this.selectors[selector];
			change(selector, elements);
		});
	},

	/////////////////////////////////////////////////////////////////
	//
	// Control example
	//
	/////////////////////////////////////////////////////////////////
	refreshSourceView: function() {
		const _this = this;
		let isChecked = _this.chkViewSource.is(&quot;:checked&quot;);

		if(isChecked) {
			for(let i = 1; i &lt;= 2; i++) {
				_this.chkViewSource.prop(&quot;checked&quot;, (isChecked = !isChecked));
				_this.toggleHtmlToSource();
			}
		}
	},

	toggleHtmlToSource: function() {
		const _this = this;
		const isChecked = this.chkViewSource.is(&quot;:checked&quot;);

		if(isChecked) {
			$.each(this.originalElements, function(key, entries) {
				entries.each(function(i, el) {
					const element = $(el);
					const html = $(&quot;&lt;div&gt;&quot;).append(element.clone()).html();
					const specialCharHtml = $(&quot;&lt;div&gt;&quot;).text(html).html();
					element.html(specialCharHtml);
				});
			});
		} else {
			$.each(this.originalElements, function(key, entries) {
				entries.each(function(i, el) {
					const element = $(el);
					const html = $(_this.clonedElements[key][i]).html();
					element.html(html);
				});
			});
		}
	},

	control: function() {
		const _this = this;

		this.chkViewSource.click(function() {
			_this.toggleHtmlToSource();
		});

		const btnInitialize = $(&quot;[name='_1q74-ex-bottom'] [name='btn-init']&quot;);
		btnInitialize.click(function() {
			$.each(_this.originalElements, function(key, entries) {
				entries.each(function(i, el) {
					const element = $(el);
					element.removeAttr(&quot;style&quot;);
				});
			});
			_this.refreshSourceView();
		});
	}
}

_1q74.example1.initialize();
_1q74.example1.execute();
_1q74.example1.control();
&lt;/script&gt;
&lt;style&gt;
[name=&quot;_1q74-ex-root&quot;] {
	min-height: 200px;
}

[name=&quot;_1q74-ex-1&quot;] {
	min-height: 170px;
}

[name=&quot;_1q74-ex-bottom&quot;] {
	min-height: 150px;
}

[name=&quot;_1q74-ex-1&quot;] td {
	min-width: 30px;
	min-height: 30px;
	width: 120px;
}

[name=&quot;_1q74-ex-bottom&quot;] tbody {
	max-width: 400px;
}

[name=&quot;_1q74-ex-bottom&quot;] td {
	width: 300px;
}

[name|=&quot;_1q74-ex&quot;] button {
	background: lightgray;
	border: 5px outset;
	min-height: 40px;
	width: 100%;
}

[name|=&quot;_1q74-ex&quot;] button:active {
	border: 5px inset;
	min-height: 40px;
	width: 100%;
}
&lt;/style&gt;

&lt;/body&gt;
&lt;/html&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. Code&lt;/h3&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1679362498114&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&amp;gt;
&amp;lt;!doctype html&amp;gt;
&amp;lt;html lang=&quot;ko&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;utf-8&quot;&amp;gt;
&amp;lt;title&amp;gt;[1q74.tistory.com] javascript/jquery/traversing/add(selector)&amp;lt;/title&amp;gt;
&amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

	&amp;lt;div name=&quot;_1q74-ex-root&quot;&amp;gt;
		&amp;lt;div name=&quot;_1q74-ex-1&quot;&amp;gt;
			&amp;lt;table name=&quot;_1q74-tbl-ex-1&quot; border=&quot;1&quot;&amp;gt;
				&amp;lt;tbody&amp;gt;
					&amp;lt;tr&amp;gt;
						&amp;lt;td r1&amp;gt;1-1&amp;lt;/td&amp;gt;
						&amp;lt;td r1&amp;gt;1-2&amp;lt;/td&amp;gt;
						&amp;lt;td r1&amp;gt;1-3&amp;lt;/td&amp;gt;
						&amp;lt;td r1&amp;gt;1-4&amp;lt;/td&amp;gt;
						&amp;lt;td r1&amp;gt;1-5&amp;lt;/td&amp;gt;
						&amp;lt;td r1&amp;gt;1-6&amp;lt;/td&amp;gt;
					&amp;lt;/tr&amp;gt;
					&amp;lt;tr&amp;gt;
						&amp;lt;td r2&amp;gt;2-1&amp;lt;/td&amp;gt;
						&amp;lt;td r2&amp;gt;2-2&amp;lt;/td&amp;gt;
						&amp;lt;td r2&amp;gt;2-3&amp;lt;/td&amp;gt;
						&amp;lt;td r2&amp;gt;2-4&amp;lt;/td&amp;gt;
						&amp;lt;td r2&amp;gt;2-5&amp;lt;/td&amp;gt;
						&amp;lt;td r2&amp;gt;2-6&amp;lt;/td&amp;gt;
					&amp;lt;/tr&amp;gt;
				&amp;lt;/tbody&amp;gt;
			&amp;lt;/table&amp;gt;

			&amp;lt;br/&amp;gt;

			&amp;lt;div name=&quot;_1q74-ex-bottom&quot;&amp;gt;
				&amp;lt;table border=&quot;1&quot;&amp;gt;
					&amp;lt;tr&amp;gt;
						&amp;lt;td colspan=&quot;2&quot;&amp;gt;
							&amp;lt;button name=&quot;btn-ex&quot; selector=&quot;ex10&quot;&amp;gt;
								#10. $(&quot;td[r1]:eq(0)&quot;).add(&quot;td[r1]:eq(2)&quot;).add(&quot;td[r1]:eq(4)&quot;)
							&amp;lt;/button&amp;gt;
							&amp;lt;button name=&quot;btn-ex&quot; selector=&quot;ex11&quot;&amp;gt;
								#11. $(&quot;td[r1]:eq(1)&quot;).add(&quot;td[r1]:eq(3)&quot;).add(&quot;td[r1]:eq(5)&quot;)
							&amp;lt;/button&amp;gt;
						&amp;lt;/td&amp;gt;
					&amp;lt;/tr&amp;gt;
					&amp;lt;tr&amp;gt;
						&amp;lt;td colspan=&quot;2&quot;&amp;gt;
							&amp;lt;button name=&quot;btn-ex&quot; selector=&quot;ex20&quot;&amp;gt;
								#20. $(&quot;td[r2][0]&quot;).add(&quot;td[r2][2]&quot;).add(&quot;td[r2][4]&quot;)
							&amp;lt;/button&amp;gt;
							&amp;lt;button name=&quot;btn-ex&quot; selector=&quot;ex21&quot;&amp;gt;
								#21. $(&quot;td[r2][1]&quot;).add(&quot;td[r2][3]&quot;).add(&quot;td[r2][5]&quot;)
							&amp;lt;/button&amp;gt;
						&amp;lt;/td&amp;gt;
					&amp;lt;/tr&amp;gt;
					&amp;lt;tr&amp;gt;
						&amp;lt;td colspan=&quot;2&quot;&amp;gt;
							&amp;lt;button name=&quot;btn-ex&quot; selector=&quot;ex30&quot;&amp;gt;
								#30. $(&quot;&amp;amp;lt;td r3&amp;amp;gt;3-0&amp;amp;lt;/td&amp;amp;gt;&quot;).add(...).add(&quot;&amp;amp;lt;td r3&amp;amp;gt;3-4&amp;amp;lt;/td&amp;amp;gt;&quot;)
							&amp;lt;/button&amp;gt;
							&amp;lt;button name=&quot;btn-ex&quot; selector=&quot;ex31&quot;&amp;gt;
								#31. $(&quot;&amp;amp;lt;td r4&amp;amp;gt;4-1&amp;amp;lt;/td&amp;amp;gt;&quot;).add(...).add(&quot;&amp;amp;lt;td r4&amp;amp;gt;4-5&amp;amp;lt;/td&amp;amp;gt;&quot;)
							&amp;lt;/button&amp;gt;
						&amp;lt;/td&amp;gt;
					&amp;lt;/tr&amp;gt;
					&amp;lt;tr&amp;gt;
						&amp;lt;td colspan=&quot;2&quot;&amp;gt;
							&amp;lt;button name=&quot;btn-ex&quot; selector=&quot;ex40&quot;&amp;gt;
								#40.$(&quot;&amp;amp;lt;td&amp;amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-0&quot;).add(...).add($(&quot;&amp;amp;lt;td&amp;amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-4&quot;))
							&amp;lt;/button&amp;gt;
							&amp;lt;button name=&quot;btn-ex&quot; selector=&quot;ex41&quot;&amp;gt;
								#41.$(&quot;&amp;amp;lt;td&amp;amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-1&quot;).add(...).add($(&quot;&amp;amp;lt;td&amp;amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-5&quot;))
							&amp;lt;/button&amp;gt;
						&amp;lt;/td&amp;gt;
					&amp;lt;/tr&amp;gt;
					&amp;lt;tr&amp;gt;
						&amp;lt;td colspan=&quot;2&quot;&amp;gt;
							&amp;lt;button name=&quot;btn-ex&quot; selector=&quot;ex50&quot;&amp;gt;
								#50.$(&quot;td:eq(0)&quot;, $(&quot;tr:eq(0)&quot;).add(...).add(&quot;td:eq(5)&quot;, $(&quot;tr:eq(1)&quot;)
							&amp;lt;/button&amp;gt;
						&amp;lt;/td&amp;gt;
					&amp;lt;/tr&amp;gt;
					&amp;lt;tr&amp;gt;
						&amp;lt;td&amp;gt;
							&amp;lt;input type=&quot;checkbox&quot; name=&quot;chk-view-src&quot; id=&quot;chk-view-src-1&quot;/&amp;gt;
							&amp;lt;label for=&quot;chk-view-src-1&quot;&amp;gt;View Source&amp;lt;/label&amp;gt;
						&amp;lt;/td&amp;gt;
						&amp;lt;td&amp;gt;
							&amp;lt;button name=&quot;btn-init&quot;&amp;gt;Initialize&amp;lt;/button&amp;gt;
						&amp;lt;/td&amp;gt;
					&amp;lt;/tr&amp;gt;
				&amp;lt;/table&amp;gt;
			&amp;lt;/div&amp;gt;
		&amp;lt;/div&amp;gt;
	&amp;lt;/div&amp;gt;

&amp;lt;script&amp;gt;
//
// _1q74 is a Namespace for preventing confliction of variable.
// It has not mean specially.
//
var _1q74 = {};
_1q74.example1 = {
	/////////////////////////////////////////////////////////////////
	//
	// Initialize container, selector, and the others
	//
	/////////////////////////////////////////////////////////////////
	initialize: function() {
		this.container = $(&quot;[name='_1q74-ex-1']&quot;);
		this.containerElement = this.container[0];

		this.selectors = {
			ex10: this.container
					.find(&quot;td[r1]:eq(0)&quot;)
					.add(&quot;td[r1]:eq(2)&quot;)
					.add(&quot;td[r1]:eq(4)&quot;),
			ex11: this.container
					.find(&quot;td[r1]:eq(1)&quot;)
					.add(&quot;td[r1]:eq(3)&quot;)
					.add(&quot;td[r1]:eq(5)&quot;),
			ex20: this.container
					.find(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[0])
					.add(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[2])
					.add(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[4]),
			ex21: this.container
					.find(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[1])
					.add(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[3])
					.add(this.containerElement.querySelectorAll(&quot;td[r2]&quot;)[5]),
			ex30: $(&quot;&amp;lt;td r3&amp;gt;3-1&amp;lt;/td&amp;gt;&quot;)
					.add(&quot;&amp;lt;td r3&amp;gt;3-2&amp;lt;/td&amp;gt;&quot;)
					.add(&quot;&amp;lt;td r3&amp;gt;3-3&amp;lt;/td&amp;gt;&quot;)
					.add(&quot;&amp;lt;td r3&amp;gt;3-4&amp;lt;/td&amp;gt;&quot;)
					.add(&quot;&amp;lt;td r3&amp;gt;3-5&amp;lt;/td&amp;gt;&quot;)
					.add(&quot;&amp;lt;td r3&amp;gt;3-6&amp;lt;/td&amp;gt;&quot;),
			ex31: $(&quot;&amp;lt;td r4&amp;gt;4-1&amp;lt;/td&amp;gt;&quot;)
					.add(&quot;&amp;lt;td r4&amp;gt;4-2&amp;lt;/td&amp;gt;&quot;)
					.add(&quot;&amp;lt;td r4&amp;gt;4-3&amp;lt;/td&amp;gt;&quot;)
					.add(&quot;&amp;lt;td r4&amp;gt;4-4&amp;lt;/td&amp;gt;&quot;)
					.add(&quot;&amp;lt;td r4&amp;gt;4-5&amp;lt;/td&amp;gt;&quot;)
					.add(&quot;&amp;lt;td r4&amp;gt;4-6&amp;lt;/td&amp;gt;&quot;),
			ex40: $(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-1&quot;)
					.add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-2&quot;))
					.add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-3&quot;))
					.add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-4&quot;))
					.add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-5&quot;))
					.add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r5&quot;, &quot;&quot;).text(&quot;5-6&quot;)),
			ex41: $(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-1&quot;)
					.add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-2&quot;))
					.add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-3&quot;))
					.add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-4&quot;))
					.add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-5&quot;))
					.add($(&quot;&amp;lt;td&amp;gt;&quot;).attr(&quot;r6&quot;, &quot;&quot;).text(&quot;6-6&quot;)),
			ex50: $(&quot;td:eq(0)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(0)&quot;)
					.add(&quot;td:eq(1)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(0)&quot;)
					.add(&quot;td:eq(2)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(0)&quot;)
					.add(&quot;td:eq(0)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(1)&quot;)
					.add(&quot;td:eq(1)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(1)&quot;)
					.add(&quot;td:eq(2)&quot;, &quot;[name='_1q74-ex-1'] [name='_1q74-tbl-ex-1'] tr:eq(1)&quot;)
		};
		this.chkViewSource = this.container.find(&quot;[name='chk-view-src']&quot;);

		this.saveOriginalHtmlSource();
	},

	saveOriginalHtmlSource: function() {
		const _this = this;

		this.originalElements = {
			r10: this.selectors.ex10,
			r11: this.selectors.ex11,
			r20: this.selectors.ex20,
			r21: this.selectors.ex21,
			r30: this.selectors.ex30,
			r31: this.selectors.ex31,
			r40: this.selectors.ex40,
			r41: this.selectors.ex41,
		};

		this.clonedElements = {};
		$.each(this.originalElements, function(key, el) {
			_this.clonedElements[key] = el.clone();
		});
	},

	getTargetRowForBeingAddedRow: function(rowAttr) {
		const _this = this;

		let defaultRow = this.container.find(&quot;[name='_1q74-tbl-ex-1'] tr:eq(1)&quot;);
		const rowNumber = rowAttr.replaceAll(/[a-z]/g, &quot;&quot;);

		let start = rowNumber - 1;
		let row;

		for(let i = start; i &amp;gt;= 2; i--) {
			row = _this.container.find(&quot;[name='_1q74-tbl-ex-1'] td[r&quot; + i + &quot;]&quot;);
			if(row.length &amp;gt; 0) break;
		}

		return row.parent();
	},
	
	/////////////////////////////////////////////////////////////////
	//
	// Execute example
	//
	/////////////////////////////////////////////////////////////////
	execute: function() {
		const _this = this;
		const btnExecute = this.container.find(&quot;[name='btn-ex']&quot;);

		function appendRow(elements, filter, style, rowAttr) {
			let targetRow;
			let isExists = false;
			let isStyled = false;

			const existElements = _this.container.find(&quot;[name='_1q74-tbl-ex-1'] td[&quot; + rowAttr + &quot;]&quot;);
			isExists = existElements.length &amp;gt; 0;
			isStyled = existElements.is(&quot;[style]&quot;);

			if(isExists &amp;amp;&amp;amp; isStyled) return false;

			if(isExists &amp;amp;&amp;amp; !isStyled) {
				elements.filter(filter).css(style);
				return true;
			} else {
				elements.filter(filter).css(style);
				targetRow = _this.getTargetRowForBeingAddedRow(rowAttr);
				targetRow.after($(&quot;&amp;lt;tr&amp;gt;&quot;).append(elements));
			}

			return true;
		}

		function change(selector, elements) {
			let targetRow;
			let isExists = false;

			switch(selector) {
				case &quot;ex10&quot;:
					elements.css({ background: &quot;#1FEC99&quot; });
					break;

				case &quot;ex11&quot;:
					elements.css({ background: &quot;#81C0E8&quot; });
					break;

				case &quot;ex20&quot;:
					elements.css({ background: &quot;#8434A4&quot; });
					break;

				case &quot;ex21&quot;:
					elements.css({ background: &quot;#34A485&quot; });
					break;

				case &quot;ex30&quot;:
					if(!appendRow(elements, &quot;:even&quot;, { background: &quot;#8B71F3&quot; }, &quot;r3&quot;)) {
						return false;
					}
					break;

				case &quot;ex31&quot;:
					if(!appendRow(elements, &quot;:odd&quot;, { background: &quot;#FF5733&quot; }, &quot;r4&quot;)) {
						return false;
					}
					break;

				case &quot;ex40&quot;:
					if(!appendRow(elements, &quot;:even&quot;, { background: &quot;#DEA85F&quot; }, &quot;r5&quot;)) {
						return false;
					}
					break;

				case &quot;ex41&quot;:
					if(!appendRow(elements, &quot;:odd&quot;, { background: &quot;#6C7908&quot; }, &quot;r6&quot;)) {
						return false;
					}
					break;

				case &quot;ex50&quot;:
					const existElements = _this.container.find(&quot;[name='_1q74-tbl-ex-1'] td[r7]&quot;);
					isExists = existElements.length &amp;gt; 0;
					isStyled = existElements.is(&quot;[style]&quot;);

					if(isExists &amp;amp;&amp;amp; isStyled) return;

					if(isExists &amp;amp;&amp;amp; !isStyled) {
						existElements.filter(&quot;:lt(3)&quot;).css({ background: &quot;#89979A&quot; });
						existElements.filter(&quot;:gt(2)&quot;).css({ background: &quot;#D43E68&quot; });
						return;
					} else {
						const clonedElements = elements.clone();
						clonedElements.removeAttr(&quot;r1&quot;).removeAttr(&quot;r2&quot;).attr(&quot;r7&quot;, &quot;&quot;);
				
						if(typeof _this.originalElements[&quot;r50&quot;] == 'undefined') {
							_this.originalElements[&quot;r50&quot;] = clonedElements;
							_this.clonedElements[&quot;r50&quot;] = _this.originalElements[&quot;r50&quot;].clone();
						}

						clonedElements.filter(&quot;:lt(3)&quot;).css({ background: &quot;#89979A&quot; });
						clonedElements.filter(&quot;:gt(2)&quot;).css({ background: &quot;#D43E68&quot; });
						targetRow = _this.getTargetRowForBeingAddedRow(&quot;r7&quot;);
						targetRow.after($(&quot;&amp;lt;tr&amp;gt;&quot;).append(clonedElements));
					}

					break;
			}

			_this.refreshSourceView();
		}

		btnExecute.click(function() {
			const selector = $(this).attr(&quot;selector&quot;);
			const elements = _this.selectors[selector];
			change(selector, elements);
		});
	},

	/////////////////////////////////////////////////////////////////
	//
	// Control example
	//
	/////////////////////////////////////////////////////////////////
	refreshSourceView: function() {
		const _this = this;
		let isChecked = _this.chkViewSource.is(&quot;:checked&quot;);

		if(isChecked) {
			for(let i = 1; i &amp;lt;= 2; i++) {
				_this.chkViewSource.prop(&quot;checked&quot;, (isChecked = !isChecked));
				_this.toggleHtmlToSource();
			}
		}
	},

	toggleHtmlToSource: function() {
		const _this = this;
		const isChecked = this.chkViewSource.is(&quot;:checked&quot;);

		if(isChecked) {
			$.each(this.originalElements, function(key, entries) {
				entries.each(function(i, el) {
					const element = $(el);
					const html = $(&quot;&amp;lt;div&amp;gt;&quot;).append(element.clone()).html();
					const specialCharHtml = $(&quot;&amp;lt;div&amp;gt;&quot;).text(html).html();
					element.html(specialCharHtml);
				});
			});
		} else {
			$.each(this.originalElements, function(key, entries) {
				entries.each(function(i, el) {
					const element = $(el);
					const html = $(_this.clonedElements[key][i]).html();
					element.html(html);
				});
			});
		}
	},

	control: function() {
		const _this = this;

		this.chkViewSource.click(function() {
			_this.toggleHtmlToSource();
		});

		const btnInitialize = $(&quot;[name='_1q74-ex-bottom'] [name='btn-init']&quot;);
		btnInitialize.click(function() {
			$.each(_this.originalElements, function(key, entries) {
				entries.each(function(i, el) {
					const element = $(el);
					element.removeAttr(&quot;style&quot;);
				});
			});
			_this.refreshSourceView();
		});
	}
}

_1q74.example1.initialize();
_1q74.example1.execute();
_1q74.example1.control();
&amp;lt;/script&amp;gt;
&amp;lt;style&amp;gt;
[name=&quot;_1q74-ex-root&quot;] {
	min-height: 200px;
}

[name=&quot;_1q74-ex-1&quot;] {
	min-height: 170px;
}

[name=&quot;_1q74-ex-bottom&quot;] {
	min-height: 150px;
}

[name=&quot;_1q74-ex-1&quot;] td {
	min-width: 30px;
	min-height: 30px;
	width: 120px;
}

[name=&quot;_1q74-ex-bottom&quot;] tbody {
	max-width: 400px;
}

[name=&quot;_1q74-ex-bottom&quot;] td {
	width: 300px;
}

[name|=&quot;_1q74-ex&quot;] button {
	background: lightgray;
	border: 5px outset;
	min-height: 40px;
	width: 100%;
}

[name|=&quot;_1q74-ex&quot;] button:active {
	border: 5px inset;
	min-height: 40px;
	width: 100%;
}
&amp;lt;/style&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. File&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bVrAqT/btr5E34UCi5/rDkfNSyWTJ7MtiEDd2Ae3K/%5Bjavascript%5D%5Bjquery%5D%5Btraversing%5Dadd.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[javascript][jquery][traversing]add.html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.01MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. Reference&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://api.jquery.com/add/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://api.jquery.com/add/&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>JavaScript/jQuery</category>
      <category>ADD</category>
      <category>jQuery</category>
      <category>traversing</category>
      <author>1Q74</author>
      <guid isPermaLink="true">https://1q74.tistory.com/87</guid>
      <comments>https://1q74.tistory.com/87#entry87comment</comments>
      <pubDate>Tue, 21 Mar 2023 10:37:31 +0900</pubDate>
    </item>
    <item>
      <title>【Native/Selector #5】Attribute Contains Word Selector [name~=&amp;rdquo;value&amp;rdquo;]</title>
      <link>https://1q74.tistory.com/86</link>
      <description>&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;1. Description&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;querySelectorAll(&quot;[name~='value']&quot;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;속성값의&amp;nbsp;문자열과&amp;nbsp;부분&amp;nbsp;매칭되면서&amp;nbsp;공백으로&amp;nbsp;구분되는&amp;nbsp;문자열을&amp;nbsp;갖고&amp;nbsp;있는&amp;nbsp;Element를&amp;nbsp;찾는다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;※ &lt;a title=&quot;【jQuery/Selector #5】Attribute Contains Word Selector [name~=&amp;rdquo;value&amp;rdquo;]&quot; href=&quot;https://1q74.tistory.com/9&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;【jQuery/Selector #5】Attribute Contains Word Selector [name~=&amp;rdquo;value&amp;rdquo;]&lt;/a&gt;의 Native버전입니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2. Example&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;「영문이름에 'of'가 들어가 있고 공백으로 단어 구분이 되는 나라」버튼을 클릭했을 경우, 나라 이름에 'of'가 들어가 있는 요소들을 찾아 border스타일을 dotted로 바꾸고, 버튼을 클릭할 때마다 스타일을 토글시킨다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;「영문이름에 공백이 들어가 있지 않은 나라」버튼을 클릭했을 경우, 나라 이름에 'in'이 들어가 있는 요소들을 찾아 배경색을 orange로 바꾸고, 해당되는 요소들을 찾지 못했을 경우 &quot;해당 나라를 찾을 수 없습니다&quot;라는 메시지를 표시한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;※ Spain과 China를 찾고자 하는 의도이지만 공백으로 구분되는 문자열이 없기 때문에 해당 요소를 선택할 수 없다.&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;
&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] javascript/native/selector/attribute-contains-word&lt;/title&gt;
&lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

	&lt;div name=&quot;_1q74-example-root&quot;&gt;
		&lt;div name=&quot;_1q74-example-1&quot; style=&quot;min-height:240px;&quot;&gt;
			&lt;h4&gt;Countries&lt;/h4&gt;
			&lt;li name=&quot;Republic of korea&quot;&gt;한국&lt;/li&gt;
			&lt;li name=&quot;United Kingdom of Great Britain and Northern Ireland&quot;&gt;영국&lt;/li&gt;
			&lt;li name=&quot;United States of America&quot;&gt;미국&lt;/li&gt;
			&lt;li name=&quot;Spain&quot;&gt;스페일&lt;/li&gt;
			&lt;li name=&quot;China&quot;&gt;중국&lt;/li&gt;
			&lt;br/&gt;
			&lt;div id=&quot;error-message&quot; style=&quot;color:red;&quot;&gt;&lt;/div&gt;
		&lt;/div&gt;

		&lt;div name=&quot;_1q74-example-bottom&quot;&gt;
			&lt;br/&gt;
			영문이름에 'of'가 들어가 있고 공백으로 단어 구분이 되는 나라&lt;br/&gt;
			&lt;button name=&quot;_1q74-btn-of-with-space&quot;&gt;#1. container.querySelectorAll(&quot;[name~='of']&quot;)&lt;/button&gt;
			&lt;br/&gt;
			&lt;/br/&gt;
			영문이름에 'in'이 들어가 있고 공백으로 단어 구분이 되는 나라&lt;br/&gt;
			&lt;button name=&quot;_1q74-btn-without-space&quot;&gt;#2. container.querySelectorAll(&quot;[name~='in']&quot;)&lt;/button&gt;
		&lt;/div&gt;
	&lt;/div&gt;

	&lt;hr/&gt;
	&lt;h5&gt;[HTML Code]&lt;/h5&gt;
	&lt;div name=&quot;_1q74-source&quot;&gt;
	&lt;/div&gt;
	&lt;h5&gt;[//HTML Code]&lt;/h5&gt;
	
&lt;script&gt;
const btnOfWithSpace = document.querySelector(&quot;[name='_1q74-btn-of-with-space']&quot;);
const btnWithoutSpace = document.querySelector(&quot;[name='_1q74-btn-without-space']&quot;);

const container = document.querySelector(&quot;[name='_1q74-example-1']&quot;);

btnOfWithSpace.addEventListener(&quot;click&quot;, function() {
	const _of = container.querySelectorAll(&quot;[name~='of']&quot;);
	const borderStyles ={
		&quot;border-style&quot;: &quot;dotted&quot;,
		&quot;border-color&quot;: &quot;green&quot;
	};	

	_of.forEach((el, i) =&gt; {
		const isStyled = (el.style.borderStyle === &quot;dotted&quot;);

		// 스타일을 토글한다.
		for(const [key, value] of Object.entries(borderStyles)) {
			if(!isStyled) {
				el.style[key] = value;
			} else {
				el.style[key] = &quot;&quot;;
			}
		}
	});
});

var withoutSpaceClickCount = 0;
btnWithoutSpace.addEventListener(&quot;click&quot;, function() {
	const _in = container.querySelectorAll(&quot;[name~='in']&quot;);

	if(_in.length == 0) {
		let msg = &quot;해당 나라를 찾을 수 없습니다.&quot;;
		if(withoutSpaceClickCount &gt; 0) {
			msg += &quot;(&quot; + withoutSpaceClickCount + &quot;)&quot;;
		}
		document.getElementById(&quot;error-message&quot;).textContent = msg;

		++withoutSpaceClickCount;
	} else {
    	_in.style.backgroundColor = &quot;orange&quot;;
    }
});

// ------------------------------------------------------
// 소스출력
// ------------------------------------------------------
var textSource = $(&quot;[name='_1q74-source']&quot;);
var exampleHtml = $(&quot;[name='_1q74-example-root']&quot;).html();
var specialCharLines = textSource.text(exampleHtml).html().split(&quot;\n&quot;);
textSource.html(specialCharLines.join(&quot;&lt;br/&gt;&quot;).replaceAll(&quot;\t&quot;, &quot;&amp;nbsp;&amp;nbsp;&quot;));
// ------------------------------------------------------
&lt;/script&gt;

&lt;style&gt;
[name='_1q74-example-bottom'] button {
	background: lightgray;
	border: 5px outset;
	min-height: 30px;
}

[name='_1q74-example-bottom'] button:active {
	border: 2px inset;
	min-height: 30px;
}
&lt;/style&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. Code&lt;/h3&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1679129082004&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&amp;gt;
&amp;lt;!doctype html&amp;gt;
&amp;lt;html lang=&quot;ko&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;utf-8&quot;&amp;gt;
&amp;lt;title&amp;gt;[1q74.tistory.com] javascript/native/selector/attribute-contains-word&amp;lt;/title&amp;gt;
&amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

	&amp;lt;div name=&quot;_1q74-example-root&quot;&amp;gt;
		&amp;lt;div name=&quot;_1q74-example-1&quot; style=&quot;min-height:240px;&quot;&amp;gt;
			&amp;lt;h4&amp;gt;Countries&amp;lt;/h4&amp;gt;
			&amp;lt;li name=&quot;Republic of korea&quot;&amp;gt;한국&amp;lt;/li&amp;gt;
			&amp;lt;li name=&quot;United Kingdom of Great Britain and Northern Ireland&quot;&amp;gt;영국&amp;lt;/li&amp;gt;
			&amp;lt;li name=&quot;United States of America&quot;&amp;gt;미국&amp;lt;/li&amp;gt;
			&amp;lt;li name=&quot;Spain&quot;&amp;gt;스페일&amp;lt;/li&amp;gt;
			&amp;lt;li name=&quot;China&quot;&amp;gt;중국&amp;lt;/li&amp;gt;
			&amp;lt;br/&amp;gt;
			&amp;lt;div id=&quot;error-message&quot; style=&quot;color:red;&quot;&amp;gt;&amp;lt;/div&amp;gt;
		&amp;lt;/div&amp;gt;

		&amp;lt;div name=&quot;_1q74-example-bottom&quot;&amp;gt;
			&amp;lt;br/&amp;gt;
			영문이름에 'of'가 들어가 있고 공백으로 단어 구분이 되는 나라&amp;lt;br/&amp;gt;
			&amp;lt;button name=&quot;_1q74-btn-of-with-space&quot;&amp;gt;#1. container.querySelectorAll(&quot;[name~='of']&quot;)&amp;lt;/button&amp;gt;
			&amp;lt;br/&amp;gt;
			&amp;lt;/br/&amp;gt;
			영문이름에 'in'이 들어가 있고 공백으로 단어 구분이 되는 나라&amp;lt;br/&amp;gt;
			&amp;lt;button name=&quot;_1q74-btn-without-space&quot;&amp;gt;#2. container.querySelectorAll(&quot;[name~='in']&quot;)&amp;lt;/button&amp;gt;
		&amp;lt;/div&amp;gt;
	&amp;lt;/div&amp;gt;

	&amp;lt;hr/&amp;gt;
	&amp;lt;h5&amp;gt;[HTML Code]&amp;lt;/h5&amp;gt;
	&amp;lt;div name=&quot;_1q74-source&quot;&amp;gt;
	&amp;lt;/div&amp;gt;
	&amp;lt;h5&amp;gt;[//HTML Code]&amp;lt;/h5&amp;gt;
	
&amp;lt;script&amp;gt;
const btnOfWithSpace = document.querySelector(&quot;[name='_1q74-btn-of-with-space']&quot;);
const btnWithoutSpace = document.querySelector(&quot;[name='_1q74-btn-without-space']&quot;);

const container = document.querySelector(&quot;[name='_1q74-example-1']&quot;);

btnOfWithSpace.addEventListener(&quot;click&quot;, function() {
	const _of = container.querySelectorAll(&quot;[name~='of']&quot;);
	const borderStyles ={
		&quot;border-style&quot;: &quot;dotted&quot;,
		&quot;border-color&quot;: &quot;green&quot;
	};	

	_of.forEach((el, i) =&amp;gt; {
		const isStyled = (el.style.borderStyle === &quot;dotted&quot;);

		// 스타일을 토글한다.
		for(const [key, value] of Object.entries(borderStyles)) {
			if(!isStyled) {
				el.style[key] = value;
			} else {
				el.style[key] = &quot;&quot;;
			}
		}
	});
});

var withoutSpaceClickCount = 0;
btnWithoutSpace.addEventListener(&quot;click&quot;, function() {
	const _in = container.querySelectorAll(&quot;[name~='in']&quot;);

	if(_in.length == 0) {
		let msg = &quot;해당 나라를 찾을 수 없습니다.&quot;;
		if(withoutSpaceClickCount &amp;gt; 0) {
			msg += &quot;(&quot; + withoutSpaceClickCount + &quot;)&quot;;
		}
		document.getElementById(&quot;error-message&quot;).textContent = msg;

		++withoutSpaceClickCount;
	} else {
    	_in.style.backgroundColor = &quot;orange&quot;;
    }
});

// ------------------------------------------------------
// 소스출력
// ------------------------------------------------------
var textSource = $(&quot;[name='_1q74-source']&quot;);
var exampleHtml = $(&quot;[name='_1q74-example-root']&quot;).html();
var specialCharLines = textSource.text(exampleHtml).html().split(&quot;\n&quot;);
textSource.html(specialCharLines.join(&quot;&amp;lt;br/&amp;gt;&quot;).replaceAll(&quot;\t&quot;, &quot;&amp;amp;nbsp;&amp;amp;nbsp;&quot;));
// ------------------------------------------------------
&amp;lt;/script&amp;gt;

&amp;lt;style&amp;gt;
[name='_1q74-example-bottom'] button {
	background: lightgray;
	border: 5px outset;
	min-height: 30px;
}

[name='_1q74-example-bottom'] button:active {
	border: 2px inset;
	min-height: 30px;
}
&amp;lt;/style&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. File&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/dgLi29/btr4FnCTbRt/wN42LVQjGC7SZlMWtaL4ak/%5Bjavascript%5D%5Bnative%5D%5Bselector%5Dattribute-contains-word.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[javascript][native][selector]attribute-contains-word.html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. See also&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://1q74.tistory.com/9&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://1q74.tistory.com/9&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1679129167239&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;【jQuery/Selector #5】Attribute Contains Word Selector [name~=&amp;rdquo;value&amp;rdquo;]&quot; data-og-description=&quot;1. Description 속성값의 문자열과 부분 매칭되면서 공백으로 구분되는 문자열을 갖고 있는 Element를 찾는다. 2. Example 「영문이름에 'of'가 들어가 있고 공백으로 단어 구분이 되는 나라」버튼을 클릭&quot; data-og-host=&quot;1q74.tistory.com&quot; data-og-source-url=&quot;https://1q74.tistory.com/9&quot; data-og-url=&quot;https://1q74.tistory.com/9&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/caiW2j/hyRZdSvRQh/eOeekkDhdqkTCii8Fjp27K/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bvJxlV/hyRY1YQLcx/t4cMmgSZGMTadl9Vowk0Fk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/okeWw/hyRZbf5zV2/rRRKTLIUtZC89X5UsjQaM1/img.jpg?width=1611&amp;amp;height=2149&amp;amp;face=0_0_1611_2149&quot;&gt;&lt;a href=&quot;https://1q74.tistory.com/9&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://1q74.tistory.com/9&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/caiW2j/hyRZdSvRQh/eOeekkDhdqkTCii8Fjp27K/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bvJxlV/hyRY1YQLcx/t4cMmgSZGMTadl9Vowk0Fk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/okeWw/hyRZbf5zV2/rRRKTLIUtZC89X5UsjQaM1/img.jpg?width=1611&amp;amp;height=2149&amp;amp;face=0_0_1611_2149');&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;【jQuery/Selector #5】Attribute Contains Word Selector [name~=&amp;rdquo;value&amp;rdquo;]&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. Description 속성값의 문자열과 부분 매칭되면서 공백으로 구분되는 문자열을 갖고 있는 Element를 찾는다. 2. Example 「영문이름에 'of'가 들어가 있고 공백으로 단어 구분이 되는 나라」버튼을 클릭&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;1q74.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. Reference&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/CSS/Attribute_selectors&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.mozilla.org/ko/docs/Web/CSS/Attribute_selectors&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>JavaScript/Native</category>
      <category>Attribute Contains Word</category>
      <category>JavaScript</category>
      <category>native</category>
      <category>[name~=&amp;rdquo;value&amp;rdquo;]</category>
      <author>1Q74</author>
      <guid isPermaLink="true">https://1q74.tistory.com/86</guid>
      <comments>https://1q74.tistory.com/86#entry86comment</comments>
      <pubDate>Sat, 18 Mar 2023 17:48:18 +0900</pubDate>
    </item>
    <item>
      <title>【Java/Cookbook】Java File Explorer</title>
      <link>https://1q74.tistory.com/85</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Description&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘은 Java GUI로 어떤 라이브러리를 사용하는지 검색을 해 보지 않아서 잘 모르겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Swing이 예전에는 컴퓨터 사양때문인지 속도가 그닥 빠르다고 기억되지 않았는데,&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Screenshot&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot_313.png&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;622&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjhVzt/btr4hQNlVOj/sGBKjDdzopl70ylZG9pKk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjhVzt/btr4hQNlVOj/sGBKjDdzopl70ylZG9pKk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjhVzt/btr4hQNlVOj/sGBKjDdzopl70ylZG9pKk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjhVzt%2Fbtr4hQNlVOj%2FsGBKjDdzopl70ylZG9pKk0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;858&quot; height=&quot;622&quot; data-filename=&quot;Screenshot_313.png&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;622&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot_317.png&quot; data-origin-width=&quot;827&quot; data-origin-height=&quot;623&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXQ4qc/btr4jn4YX0S/HnyN5hlNKLtvMQ4NbkUY9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXQ4qc/btr4jn4YX0S/HnyN5hlNKLtvMQ4NbkUY9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXQ4qc/btr4jn4YX0S/HnyN5hlNKLtvMQ4NbkUY9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXQ4qc%2Fbtr4jn4YX0S%2FHnyN5hlNKLtvMQ4NbkUY9K%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;827&quot; height=&quot;623&quot; data-filename=&quot;Screenshot_317.png&quot; data-origin-width=&quot;827&quot; data-origin-height=&quot;623&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot_315.png&quot; data-origin-width=&quot;753&quot; data-origin-height=&quot;311&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8347k/btr4gVIdKa8/Y1uwu7BOiErt0I0y2lzegk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8347k/btr4gVIdKa8/Y1uwu7BOiErt0I0y2lzegk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8347k/btr4gVIdKa8/Y1uwu7BOiErt0I0y2lzegk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8347k%2Fbtr4gVIdKa8%2FY1uwu7BOiErt0I0y2lzegk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;753&quot; height=&quot;311&quot; data-filename=&quot;Screenshot_315.png&quot; data-origin-width=&quot;753&quot; data-origin-height=&quot;311&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. File&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/1Q74/wife&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/1Q74/wife&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1679018163184&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - 1Q74/wife: Java File Explorer for just study&quot; data-og-description=&quot;Java File Explorer for just study. Contribute to 1Q74/wife development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/1Q74/wife&quot; data-og-url=&quot;https://github.com/1Q74/wife&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ceBXeo/hyRWvAS24M/BPd6HkkYWr3Mk4CUKjvQ9k/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/1Q74/wife&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/1Q74/wife&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ceBXeo/hyRWvAS24M/BPd6HkkYWr3Mk4CUKjvQ9k/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;GitHub - 1Q74/wife: Java File Explorer for just study&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Java File Explorer for just study. Contribute to 1Q74/wife development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Java/Cookbook</category>
      <category>File explorer</category>
      <category>Java</category>
      <category>Swing</category>
      <author>1Q74</author>
      <guid isPermaLink="true">https://1q74.tistory.com/85</guid>
      <comments>https://1q74.tistory.com/85#entry85comment</comments>
      <pubDate>Fri, 17 Mar 2023 10:58:00 +0900</pubDate>
    </item>
    <item>
      <title>【CSS/table】Creating table with div(div로 테이블 만들기) #1</title>
      <link>https://1q74.tistory.com/84</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Description&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;display: table, display: table-row, display: table-cell을 이용하여 테이블을 만든다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Example (1) : 기본 테이블&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 가장 기본적인 2 x 2형태의 테이블이다(테이블의 border조차 보이지 않는다).&lt;/p&gt;
&lt;pre id=&quot;code_1678943567989&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;._1q74-ex-1 {
}
._1q74-ex-1 .table {
	display: table;
	background: #022F04;
	width: 200px;
	height: 200px;
}
._1q74-ex-1 .row {
	display: table-row;
}
._1q74-ex-1 .cell {
	display: table-cell;
	background: #196F1D;
}&lt;/code&gt;&lt;/pre&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;

&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] css/div/table&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

	&lt;div name=&quot;_1q74-example-root&quot;&gt;
		&lt;div name=&quot;_1q74-example-1&quot; class=&quot;_1q74-ex-1&quot;&gt;

			&lt;div class=&quot;table&quot;&gt;
				&lt;div class=&quot;row&quot;&gt;
					&lt;div class=&quot;cell&quot;&gt;1-1&lt;/div&gt;
					&lt;div class=&quot;cell&quot;&gt;1-2&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;row&quot;&gt;
					&lt;div class=&quot;cell&quot;&gt;2-1&lt;/div&gt;
					&lt;div class=&quot;cell&quot;&gt;2-2&lt;/div&gt;
				&lt;/div&gt;
			&lt;/div&gt;

		&lt;/div&gt;
	&lt;/div&gt;

&lt;style&gt;
._1q74-ex-1 {
}
._1q74-ex-1 .table {
	display: table;
	background: #022F04;
	width: 200px;
	height: 200px;
}
._1q74-ex-1 .row {
	display: table-row;
}
._1q74-ex-1 .cell {
	display: table-cell;
	background: #196F1D;
}
&lt;/style&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. File (1)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/baLGhZ/btr4kPUjTqD/1R99AwmRkCgUKlThEabGxK/%5Bcss%5D%5Bdiv%5D%5Btable%5Dnormal%282x2%29.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[css][div][table]normal(2x2).html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&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;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. Example (2) : 테이블 border효과 내기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;display: table속성에 border-collapse, border-spacing을 추가하여 테이블의 border처럼 보이게 할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1678943872232&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;._1q74-ex-2 {
}
._1q74-ex-2 .table {
	display: table;
	border-collapse: separate;
	border-spacing: 5px;
	background: #02A80A;
	width: 200px;
	height: 200px;
}
._1q74-ex-2 .row {
	display: table-row;
}
._1q74-ex-2 .cell {
	display: table-cell;
	background: #41EA49;
}&lt;/code&gt;&lt;/pre&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;

&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] css/div/table-border&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

	&lt;div name=&quot;_1q74-example-root&quot;&gt;
		&lt;div name=&quot;_1q74-example-2&quot; class=&quot;_1q74-ex-2&quot;&gt;

			&lt;div class=&quot;table&quot;&gt;
				&lt;div class=&quot;row&quot;&gt;
					&lt;div class=&quot;cell&quot;&gt;1-1&lt;/div&gt;
					&lt;div class=&quot;cell&quot;&gt;1-2&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;row&quot;&gt;
					&lt;div class=&quot;cell&quot;&gt;2-1&lt;/div&gt;
					&lt;div class=&quot;cell&quot;&gt;2-2&lt;/div&gt;
				&lt;/div&gt;
			&lt;/div&gt;

		&lt;/div&gt;
	&lt;/div&gt;

&lt;style&gt;
._1q74-ex-2 {
}
._1q74-ex-2 .table {
	display: table;
	border-collapse: separate;
	border-spacing: 5px;
	background: #02A80A;
	width: 200px;
	height: 200px;
}
._1q74-ex-2 .row {
	display: table-row;
}
._1q74-ex-2 .cell {
	display: table-cell;
	background: #41EA49;
}
&lt;/style&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. File (2)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/Yw7Ov/btr4iT3Zp5m/1TlkRrf9UGGwpQjezhSjPk/%5Bcss%5D%5Bdiv%5D%5Btable%5Dnormal%282x2%29-border.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[css][div][table]normal(2x2)-border.html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. Example (3) : 컬럼 그룹으로 나누기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;table-column-group, table-column 속성값으로 컬럼 그룹을 나눌 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제에서는 컬럼의 넓이를 4:6 비율로 나누었다.&lt;/p&gt;
&lt;pre id=&quot;code_1678950170002&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;._1q74-ex-3 {
}
._1q74-ex-3 .table {
	display: table;
	border-collapse: separate;
	border-spacing: 5px;
	background: #02A80A;
	width: 200px;
	height: 200px;
}
._1q74-ex-3 .table-column-group {
	display: table-column-group;
}
._1q74-ex-3 .table-column {
	display: table-column;
}
._1q74-ex-3 .table-column:nth-child(1) {
	width: 40%;
}
._1q74-ex-3 .table-column:nth-child(2) {
	width: 60%;
}
._1q74-ex-3 .row {
	display: table-row;
}
._1q74-ex-3 .cell {
	display: table-cell;
	background: #41EA49;
}&lt;/code&gt;&lt;/pre&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;

&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] css/div/table-column-group&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

	&lt;div name=&quot;_1q74-example-root&quot;&gt;
		&lt;div name=&quot;_1q74-example-3&quot; class=&quot;_1q74-ex-3&quot;&gt;

			&lt;div class=&quot;table&quot;&gt;
				&lt;div class=&quot;table-column-group&quot;&gt;
					&lt;div class=&quot;table-column&quot;&gt;Column-1&lt;/div&gt;
					&lt;div class=&quot;table-column&quot;&gt;Column-2&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;row&quot;&gt;
					&lt;div class=&quot;cell&quot;&gt;1-1&lt;/div&gt;
					&lt;div class=&quot;cell&quot;&gt;1-2&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;row&quot;&gt;
					&lt;div class=&quot;cell&quot;&gt;2-1&lt;/div&gt;
					&lt;div class=&quot;cell&quot;&gt;2-2&lt;/div&gt;
				&lt;/div&gt;
			&lt;/div&gt;

		&lt;/div&gt;
	&lt;/div&gt;

&lt;style&gt;
._1q74-ex-3 {
}
._1q74-ex-3 .table {
	display: table;
	border-collapse: separate;
	border-spacing: 5px;
	background: #02A80A;
	width: 200px;
	height: 200px;
}
._1q74-ex-3 .table-column-group {
	display: table-column-group;
}
._1q74-ex-3 .table-column {
	display: table-column;
}
._1q74-ex-3 .table-column:nth-child(1) {
	width: 40%;
}
._1q74-ex-3 .table-column:nth-child(2) {
	width: 60%;
}
._1q74-ex-3 .row {
	display: table-row;
}
._1q74-ex-3 .cell {
	display: table-cell;
	background: #41EA49;
}
&lt;/style&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. File (3)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/4OVts/btr4gEGHzZE/oqzyk5SLQADlS0ZTfWEMWk/%5Bcss%5D%5Bdiv%5D%5Btable%5Dnormal%282x2%29-column-group.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[css][div][table]normal(2x2)-column-group.html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;8. Example (4) : 컬럼 헤더 추가하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;table-header-group 속성값으로 컬럼 헤더를 넣을 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1678952200906&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;._1q74-ex-4 {
}
._1q74-ex-4 .table {
	display: table;
	border-collapse: separate;
	border-spacing: 5px;
	background: #02A80A;
	width: 200px;
	height: 200px;
}
._1q74-ex-4 .column-group {
	display: table-column-group;
}
._1q74-ex-4 .column {
	display: table-column;
}
._1q74-ex-4 .column:nth-child(1) {
	width: 40%;
}
._1q74-ex-4 .column:nth-child(2) {
	width: 60%;
}
._1q74-ex-4 .header-group {
	display: table-header-group;
}
._1q74-ex-4 .header-group .cell {
	background: #D9FF07;
}
._1q74-ex-4 .row {
	display: table-row;
}
._1q74-ex-4 .cell {
	display: table-cell;
	background: #41EA49;
}&lt;/code&gt;&lt;/pre&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;

&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] css/div/table-column-header&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

	&lt;div name=&quot;_1q74-example-root&quot;&gt;
		&lt;div name=&quot;_1q74-example-4&quot; class=&quot;_1q74-ex-4&quot;&gt;

			&lt;div class=&quot;table&quot;&gt;
				&lt;div class=&quot;column-group&quot;&gt;
					&lt;div class=&quot;column&quot;&gt;Column-1&lt;/div&gt;
					&lt;div class=&quot;column&quot;&gt;Column-2&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;header-group&quot;&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;H-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;H-2&lt;/div&gt;
					&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;row&quot;&gt;
					&lt;div class=&quot;cell&quot;&gt;1-1&lt;/div&gt;
					&lt;div class=&quot;cell&quot;&gt;1-2&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;row&quot;&gt;
					&lt;div class=&quot;cell&quot;&gt;2-1&lt;/div&gt;
					&lt;div class=&quot;cell&quot;&gt;2-2&lt;/div&gt;
				&lt;/div&gt;
			&lt;/div&gt;

		&lt;/div&gt;
	&lt;/div&gt;

&lt;style&gt;
._1q74-ex-4 {
}
._1q74-ex-4 .table {
	display: table;
	border-collapse: separate;
	border-spacing: 5px;
	background: #02A80A;
	width: 200px;
	height: 200px;
}
._1q74-ex-4 .column-group {
	display: table-column-group;
}
._1q74-ex-4 .column {
	display: table-column;
}
._1q74-ex-4 .column:nth-child(1) {
	width: 40%;
}
._1q74-ex-4 .column:nth-child(2) {
	width: 60%;
}
._1q74-ex-4 .header-group {
	display: table-header-group;
}
._1q74-ex-4 .header-group .cell {
	background: #D9FF07;
}
._1q74-ex-4 .row {
	display: table-row;
}
._1q74-ex-4 .cell {
	display: table-cell;
	background: #41EA49;
}
&lt;/style&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;9. File (4)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/A4b6O/btr4mCNYhnY/aWISgqjvuNeQ7blTpIjeM0/%5Bcss%5D%5Bdiv%5D%5Btable%5Dnormal%282x2%29-column-header.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[css][div][table]normal(2x2)-column-header.html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;10. Example (5) : 컬럼 바디 추가하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;table-row-group 속성값으로 컬럼 바디를 추가할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1678952845266&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;._1q74-ex-5 {
}
._1q74-ex-5 .table {
	display: table;
	border-collapse: separate;
	border-spacing: 5px;
	background: #02A80A;
	width: 200px;
	height: 200px;
}
._1q74-ex-5 .column-group {
	display: table-column-group;
}
._1q74-ex-5 .column {
	display: table-column;
}
._1q74-ex-5 .column:nth-child(1) {
	width: 40%;
}
._1q74-ex-5 .column:nth-child(2) {
	width: 60%;
}
._1q74-ex-5 .header-group {
	display: table-header-group;
}
._1q74-ex-5 .header-group .cell {
	background: #D9FF07;
}
._1q74-ex-5 .row-group {
	display: table-row-group;
}
._1q74-ex-5 .row-group .cell {
	display: table-cell;
	border: 2px solid;
}
._1q74-ex-5 .row {
	display: table-row;
}
._1q74-ex-5 .cell {
	display: table-cell;
	background: #41EA49;
}&lt;/code&gt;&lt;/pre&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;

&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] css/div/table-row-group&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

	&lt;div name=&quot;_1q74-example-root&quot;&gt;
		&lt;div name=&quot;_1q74-example-5&quot; class=&quot;_1q74-ex-5&quot;&gt;

			&lt;div class=&quot;table&quot;&gt;
				&lt;div class=&quot;column-group&quot;&gt;
					&lt;div class=&quot;column&quot;&gt;Column-1&lt;/div&gt;
					&lt;div class=&quot;column&quot;&gt;Column-2&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;header-group&quot;&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;H-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;H-2&lt;/div&gt;
					&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;row-group&quot;&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;1-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;1-2&lt;/div&gt;
					&lt;/div&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;2-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;2-2&lt;/div&gt;
					&lt;/div&gt;
				&lt;/div&gt;
			&lt;/div&gt;

		&lt;/div&gt;
	&lt;/div&gt;

&lt;style&gt;
._1q74-ex-5 {
}
._1q74-ex-5 .table {
	display: table;
	border-collapse: separate;
	border-spacing: 5px;
	background: #02A80A;
	width: 200px;
	height: 200px;
}
._1q74-ex-5 .column-group {
	display: table-column-group;
}
._1q74-ex-5 .column {
	display: table-column;
}
._1q74-ex-5 .column:nth-child(1) {
	width: 40%;
}
._1q74-ex-5 .column:nth-child(2) {
	width: 60%;
}
._1q74-ex-5 .header-group {
	display: table-header-group;
}
._1q74-ex-5 .header-group .cell {
	background: #D9FF07;
}
._1q74-ex-5 .row-group {
	display: table-row-group;
}
._1q74-ex-5 .row-group .cell {
	display: table-cell;
	border: 2px solid;
}
._1q74-ex-5 .row {
	display: table-row;
}
._1q74-ex-5 .cell {
	display: table-cell;
	background: #41EA49;
}
&lt;/style&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;11. File (5)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/b1YXKR/btr4fyz4nCp/GkKn1YuQC1YIdtSxJnNEFk/%5Bcss%5D%5Bdiv%5D%5Btable%5Dnormal%282x2%29-column-body.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[css][div][table]normal(2x2)-column-body.html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;12. Example (6) : 컬럼 푸터 넣기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;table-footer-group 속성값으로 컬럼 푸터를 넣을 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1678953389662&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;._1q74-ex-6 {
}
._1q74-ex-6 .table {
	display: table;
	border-collapse: separate;
	border-spacing: 5px;
	background: #02A80A;
	width: 200px;
	height: 200px;
}
._1q74-ex-6 .column-group {
	display: table-column-group;
}
._1q74-ex-6 .column {
	display: table-column;
}
._1q74-ex-6 .column:nth-child(1) {
	width: 40%;
}
._1q74-ex-6 .column:nth-child(2) {
	width: 60%;
}
._1q74-ex-6 .header-group {
	display: table-header-group;
}
._1q74-ex-6 .header-group .cell {
	background: #D9FF07;
}
._1q74-ex-6 .row-group {
	display: table-row-group;
}
._1q74-ex-6 .row-group .cell {
	display: table-cell;
	border: 2px solid;
}
._1q74-ex-6 .row {
	display: table-row;
}
._1q74-ex-6 .cell {
	display: table-cell;
	background: #41EA49;
}
._1q74-ex-6 .footer-group {
	display: table-footer-group;
}
._1q74-ex-6 .footer-group .cell {
	display: table-cell;
	background: #38EAF9;
}&lt;/code&gt;&lt;/pre&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;

&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] css/div/table-footer-group&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

	&lt;div name=&quot;_1q74-example-root&quot;&gt;
		&lt;div name=&quot;_1q74-example-6&quot; class=&quot;_1q74-ex-6&quot;&gt;

			&lt;div class=&quot;table&quot;&gt;
				&lt;div class=&quot;column-group&quot;&gt;
					&lt;div class=&quot;column&quot;&gt;Column-1&lt;/div&gt;
					&lt;div class=&quot;column&quot;&gt;Column-2&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;header-group&quot;&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;H-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;H-2&lt;/div&gt;
					&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;row-group&quot;&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;1-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;1-2&lt;/div&gt;
					&lt;/div&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;2-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;2-2&lt;/div&gt;
					&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;footer-group&quot;&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;F-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;F-2&lt;/div&gt;
					&lt;/div&gt;
				&lt;/div&gt;
			&lt;/div&gt;

		&lt;/div&gt;
	&lt;/div&gt;

&lt;style&gt;
._1q74-ex-6 {
}
._1q74-ex-6 .table {
	display: table;
	border-collapse: separate;
	border-spacing: 5px;
	background: #02A80A;
	width: 200px;
	height: 200px;
}
._1q74-ex-6 .column-group {
	display: table-column-group;
}
._1q74-ex-6 .column {
	display: table-column;
}
._1q74-ex-6 .column:nth-child(1) {
	width: 40%;
}
._1q74-ex-6 .column:nth-child(2) {
	width: 60%;
}
._1q74-ex-6 .header-group {
	display: table-header-group;
}
._1q74-ex-6 .header-group .cell {
	background: #D9FF07;
}
._1q74-ex-6 .row-group {
	display: table-row-group;
}
._1q74-ex-6 .row-group .cell {
	display: table-cell;
	border: 2px solid;
}
._1q74-ex-6 .row {
	display: table-row;
}
._1q74-ex-6 .cell {
	display: table-cell;
	background: #41EA49;
}
._1q74-ex-6 .footer-group {
	display: table-footer-group;
}
._1q74-ex-6 .footer-group .cell {
	display: table-cell;
	background: #38EAF9;
}
&lt;/style&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;13. File (6)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/cDYQTE/btr4gwvemrY/5NYoM0173VBZgwxqzJjzBK/%5Bcss%5D%5Bdiv%5D%5Btable%5Dnormal%282x2%29-column-footer.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[css][div][table]normal(2x2)-column-footer.html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;14. Example (7) : 테이블 타이틀 넣기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;table-caption 속성값으로 타이틀을 넣을 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1678954129751&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;._1q74-ex-7 {
}
._1q74-ex-7 .table {
	display: table;
	border-collapse: separate;
	border-spacing: 5px;
	background: #02A80A;
	width: 200px;
	height: 200px;
}
._1q74-ex-7 .caption {
	display: table-caption;
	font-weight: bold;
}
._1q74-ex-7 .column-group {
	display: table-column-group;
}
._1q74-ex-7 column {
	display: table-column;
}
._1q74-ex-7 .column:nth-child(1) {
	width: 40%;
}
._1q74-ex-7 .column:nth-child(2) {
	width: 60%;
}
._1q74-ex-7 .header-group {
	display: table-header-group;
}
._1q74-ex-7 .header-group .cell {
	background: #D9FF07;
}
._1q74-ex-7 .row-group {
	display: table-row-group;
}
._1q74-ex-7 .row-group .cell {
	display: table-cell;
	border: 2px solid;
}
._1q74-ex-7 .row {
	display: table-row;
}
._1q74-ex-7 .cell {
	display: table-cell;
	background: #41EA49;
}
._1q74-ex-7 .footer-group {
	display: table-footer-group;
}
._1q74-ex-7 .footer-group .cell {
	display: table-cell;
	background: #38EAF9;
}&lt;/code&gt;&lt;/pre&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;

&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] css/div/table-caption&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

	&lt;div name=&quot;_1q74-example-root&quot;&gt;
		&lt;div name=&quot;_1q74-example-7&quot; class=&quot;_1q74-ex-7&quot;&gt;

			&lt;div class=&quot;table&quot;&gt;
				&lt;div class=&quot;caption&quot;&gt;Table with div&lt;/div&gt;
				&lt;div class=&quot;column-group&quot;&gt;
					&lt;div class=&quot;column&quot;&gt;Column-1&lt;/div&gt;
					&lt;div class=&quot;column&quot;&gt;Column-2&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;header-group&quot;&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;H-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;H-2&lt;/div&gt;
					&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;row-group&quot;&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;1-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;1-2&lt;/div&gt;
					&lt;/div&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;2-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;2-2&lt;/div&gt;
					&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;footer-group&quot;&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;F-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;F-2&lt;/div&gt;
					&lt;/div&gt;
				&lt;/div&gt;
			&lt;/div&gt;

		&lt;/div&gt;
	&lt;/div&gt;

&lt;style&gt;
._1q74-ex-7 {
}
._1q74-ex-7 .table {
	display: table;
	border-collapse: separate;
	border-spacing: 5px;
	background: #02A80A;
	width: 200px;
	height: 200px;
}
._1q74-ex-7 .caption {
	display: table-caption;
	font-weight: bold;
}
._1q74-ex-7 .column-group {
	display: table-column-group;
}
._1q74-ex-7 column {
	display: table-column;
}
._1q74-ex-7 .column:nth-child(1) {
	width: 40%;
}
._1q74-ex-7 .column:nth-child(2) {
	width: 60%;
}
._1q74-ex-7 .header-group {
	display: table-header-group;
}
._1q74-ex-7 .header-group .cell {
	background: #D9FF07;
}
._1q74-ex-7 .row-group {
	display: table-row-group;
}
._1q74-ex-7 .row-group .cell {
	display: table-cell;
	border: 2px solid;
}
._1q74-ex-7 .row {
	display: table-row;
}
._1q74-ex-7 .cell {
	display: table-cell;
	background: #41EA49;
}
._1q74-ex-7 .footer-group {
	display: table-footer-group;
}
._1q74-ex-7 .footer-group .cell {
	display: table-cell;
	background: #38EAF9;
}
&lt;/style&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;15. File (7)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/cYoJPG/btr4fTYlb6e/8cPneCQbhELV7N2KmpTSKk/%5Bcss%5D%5Bdiv%5D%5Btable%5Dnormal%282x2%29-caption.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[css][div][table]normal(2x2)-caption.html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;16. Example (8) : 텍스트를 박스의 한가운데로 정렬하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cell 클래스에 text-align: center, vertical-align: middle 속성을 추가한다.&lt;/p&gt;
&lt;pre id=&quot;code_1678954683340&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;._1q74-ex-8 {
}
._1q74-ex-8 .table {
	display: table;
	border-collapse: separate;
	border-spacing: 5px;
	background: #02A80A;
	width: 200px;
	height: 200px;
}
._1q74-ex-8 .table .cell {
	text-align: center;
	vertical-align: middle;
}
._1q74-ex-8 .caption {
	display: table-caption;
	font-weight: bold;
}
._1q74-ex-8 .column-group {
	display: table-column-group;
}
._1q74-ex-8 .column {
	display: table-column;
}
._1q74-ex-8 .column:nth-child(1) {
	width: 40%;
}
._1q74-ex-8 .column:nth-child(2) {
	width: 60%;
}
._1q74-ex-8 .header-group {
	display: table-header-group;
}
._1q74-ex-8 .header-group .cell {
	background: #D9FF07;
}
._1q74-ex-8 .row-group {
	display: table-row-group;
}
._1q74-ex-8 .row-group .cell {
	display: table-cell;
	border: 2px solid;
}
._1q74-ex-8 .row {
	display: table-row;
}
._1q74-ex-8 .cell {
	display: table-cell;
	background: #41EA49;
}
._1q74-ex-8 .footer-group {
	display: table-footer-group;
}
._1q74-ex-8 .footer-group .cell {
	display: table-cell;
	background: #38EAF9;
}&lt;/code&gt;&lt;/pre&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;

&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] css/div/table-text-align&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

	&lt;div name=&quot;_1q74-example-root&quot;&gt;
		&lt;div name=&quot;_1q74-example-8&quot; class=&quot;_1q74-ex-8&quot;&gt;

			&lt;div class=&quot;table&quot;&gt;
				&lt;div class=&quot;caption&quot;&gt;Table with div&lt;/div&gt;
				&lt;div class=&quot;column-group&quot;&gt;
					&lt;div class=&quot;column&quot;&gt;Column-1&lt;/div&gt;
					&lt;div class=&quot;column&quot;&gt;Column-2&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;header-group&quot;&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;H-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;H-2&lt;/div&gt;
					&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;row-group&quot;&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;1-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;1-2&lt;/div&gt;
					&lt;/div&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;2-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;2-2&lt;/div&gt;
					&lt;/div&gt;
				&lt;/div&gt;
				&lt;div class=&quot;footer-group&quot;&gt;
					&lt;div class=&quot;row&quot;&gt;
						&lt;div class=&quot;cell&quot;&gt;F-1&lt;/div&gt;
						&lt;div class=&quot;cell&quot;&gt;F-2&lt;/div&gt;
					&lt;/div&gt;
				&lt;/div&gt;
			&lt;/div&gt;

		&lt;/div&gt;
	&lt;/div&gt;

&lt;style&gt;
._1q74-ex-8 {
}
._1q74-ex-8 .table {
	display: table;
	border-collapse: separate;
	border-spacing: 5px;
	background: #02A80A;
	width: 200px;
	height: 200px;
}
._1q74-ex-8 .table .cell {
	text-align: center;
	vertical-align: middle;
}
._1q74-ex-8 .caption {
	display: table-caption;
	font-weight: bold;
}
._1q74-ex-8 .column-group {
	display: table-column-group;
}
._1q74-ex-8 .column {
	display: table-column;
}
._1q74-ex-8 .column:nth-child(1) {
	width: 40%;
}
._1q74-ex-8 .column:nth-child(2) {
	width: 60%;
}
._1q74-ex-8 .header-group {
	display: table-header-group;
}
._1q74-ex-8 .header-group .cell {
	background: #D9FF07;
}
._1q74-ex-8 .row-group {
	display: table-row-group;
}
._1q74-ex-8 .row-group .cell {
	display: table-cell;
	border: 2px solid;
}
._1q74-ex-8 .row {
	display: table-row;
}
._1q74-ex-8 .cell {
	display: table-cell;
	background: #41EA49;
}
._1q74-ex-8 .footer-group {
	display: table-footer-group;
}
._1q74-ex-8 .footer-group .cell {
	display: table-cell;
	background: #38EAF9;
}
&lt;/style&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;17. File (8)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/6x50z/btr4bkaRMBh/xozYZu0TKo5xPZeWKSTFH0/%5Bcss%5D%5Bdiv%5D%5Btable%5Dnormal%282x2%29-text-align.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[css][div][table]normal(2x2)-text-align.html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;18. Summary&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 156px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;&amp;lt;TABLE&amp;gt;태그&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;CSS 속성&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;lt;table&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;{ display: table }&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;lt;caption&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;{ display: table-caption }&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;lt;colgroup&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;{ display: table-column-group }&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;lt;col&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;{ display: table-column }&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;lt;thead&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;{ display: table-header-group }&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;lt;th&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;{ display: table-cell }&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;lt;tbody&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;{ display: table-row-group }&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;lt;tr&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;{ display: table-row }&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;lt;td&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;{ display: table-cell }&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&amp;lt;tfoot&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;{ display: table-footer-group }&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>CSS/Cookbook</category>
      <category>table</category>
      <category>table-cell</category>
      <category>table-row</category>
      <author>1Q74</author>
      <guid isPermaLink="true">https://1q74.tistory.com/84</guid>
      <comments>https://1q74.tistory.com/84#entry84comment</comments>
      <pubDate>Thu, 16 Mar 2023 12:47:42 +0900</pubDate>
    </item>
    <item>
      <title>【CSS/Cookbook】Making HTML Random Color Code(HTML 랜덤 색상 만들기)</title>
      <link>https://1q74.tistory.com/83</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Description&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript의 Math함수를 이용하여 난수를 발생시키고, 제한값을 0xFFFFFF로 설정한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Example&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[Click Me]버튼을 클릭할 때마다 Box의 배경색이 랜덤색상으로 변경된다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;
&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] css/div/table&lt;/title&gt;
&lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

	&lt;div name=&quot;_1q74-example-root&quot;&gt;
		&lt;div name=&quot;_1q74-example-1&quot;&gt;
		&lt;/div&gt;

		&lt;div name=&quot;_1q74-example-bottom&quot;&gt;
			&lt;br/&gt;
			&lt;button name=&quot;btn-execute&quot;&gt;Click Me&lt;/button&gt;
		&lt;/div&gt;

		&lt;script&gt;
		var btnExecute = $(&quot;[name='_1q74-example-bottom'] [name='btn-execute']&quot;);
		var box = $(&quot;[name='_1q74-example-1']&quot;);

		btnExecute.click(function() {
			const numberLimit = parseInt(0xFFFFFF, 10);
			const randomNumber = Math.random() * numberLimit;
			const randomColorCode = &quot;#&quot; + Math.ceil(randomNumber).toString(16);
			box.css(&quot;background&quot;, randomColorCode).text(randomColorCode);	
		});
		&lt;/script&gt;
	&lt;/div&gt;

	&lt;!--------------- [HTML Code] ---------------&gt;
	&lt;hr/&gt;
	&lt;h5&gt;[HTML Code]&lt;/h5&gt;
	&lt;div name=&quot;_1q74-source&quot;&gt;
	&lt;/div&gt;
	&lt;h5&gt;[//HTML Code]&lt;/h5&gt;
	&lt;!--------------- [//HTML Code] ---------------&gt;

&lt;script&gt;
// ------------------------------------------------------
// 소스출력
// ------------------------------------------------------
var textSource = $(&quot;[name='_1q74-source']&quot;);
var exampleHtml = $(&quot;[name='_1q74-example-root']&quot;).html();
var specialCharLines = textSource.text(exampleHtml).html().split(&quot;\n&quot;);
textSource.html(specialCharLines.join(&quot;&lt;br/&gt;&quot;).replaceAll(&quot;\t&quot;, &quot;&amp;nbsp;&amp;nbsp;&quot;));
&lt;/script&gt;

&lt;style&gt;
[name=&quot;_1q74-example-1&quot;] {
	display: block;
	width: 200px;
	height: 200px;
	border: 2px solid black;
}

[name|=&quot;_1q74-example&quot;] button
,[name=&quot;_1q74-source&quot;] button {
	background: lightgray;
	border: 5px outset;
	min-height: 40px;
}

[name|=&quot;_1q74-example&quot;] button:active
,[name=&quot;_1q74-source&quot;] button:active {
	border: 2px inset;
	min-height: 40px;
}
&lt;/style&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. Code&lt;/h3&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1678937161956&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&amp;gt;
&amp;lt;!doctype html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;utf-8&quot;&amp;gt;
&amp;lt;title&amp;gt;[1q74.tistory.com] css/div/table&amp;lt;/title&amp;gt;
&amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

	&amp;lt;div name=&quot;_1q74-example-root&quot;&amp;gt;
		&amp;lt;div name=&quot;_1q74-example-1&quot;&amp;gt;
		&amp;lt;/div&amp;gt;

		&amp;lt;div name=&quot;_1q74-example-bottom&quot;&amp;gt;
			&amp;lt;br/&amp;gt;
			&amp;lt;button name=&quot;btn-execute&quot;&amp;gt;Click Me&amp;lt;/button&amp;gt;
		&amp;lt;/div&amp;gt;

		&amp;lt;script&amp;gt;
		var btnExecute = $(&quot;[name='_1q74-example-bottom'] [name='btn-execute']&quot;);
		var box = $(&quot;[name='_1q74-example-1']&quot;);

		btnExecute.click(function() {
			const numberLimit = parseInt(0xFFFFFF, 10);
			const randomNumber = Math.random() * numberLimit;
			const randomColorCode = &quot;#&quot; + Math.ceil(randomNumber).toString(16);
			box.css(&quot;background&quot;, randomColorCode).text(randomColorCode);	
		});
		&amp;lt;/script&amp;gt;
	&amp;lt;/div&amp;gt;

	&amp;lt;!--------------- [HTML Code] ---------------&amp;gt;
	&amp;lt;hr/&amp;gt;
	&amp;lt;h5&amp;gt;[HTML Code]&amp;lt;/h5&amp;gt;
	&amp;lt;div name=&quot;_1q74-source&quot;&amp;gt;
	&amp;lt;/div&amp;gt;
	&amp;lt;h5&amp;gt;[//HTML Code]&amp;lt;/h5&amp;gt;
	&amp;lt;!--------------- [//HTML Code] ---------------&amp;gt;

&amp;lt;script&amp;gt;
// ------------------------------------------------------
// 소스출력
// ------------------------------------------------------
var textSource = $(&quot;[name='_1q74-source']&quot;);
var exampleHtml = $(&quot;[name='_1q74-example-root']&quot;).html();
var specialCharLines = textSource.text(exampleHtml).html().split(&quot;\n&quot;);
textSource.html(specialCharLines.join(&quot;&amp;lt;br/&amp;gt;&quot;).replaceAll(&quot;\t&quot;, &quot;&amp;amp;nbsp;&amp;amp;nbsp;&quot;));
&amp;lt;/script&amp;gt;

&amp;lt;style&amp;gt;
[name=&quot;_1q74-example-1&quot;] {
	display: block;
	width: 200px;
	height: 200px;
	border: 2px solid black;
}

[name|=&quot;_1q74-example&quot;] button
,[name=&quot;_1q74-source&quot;] button {
	background: lightgray;
	border: 5px outset;
	min-height: 40px;
}

[name|=&quot;_1q74-example&quot;] button:active
,[name=&quot;_1q74-source&quot;] button:active {
	border: 2px inset;
	min-height: 40px;
}
&amp;lt;/style&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. File&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/xvooy/btr4fyx10wS/JSII5KstnDk3HKhDJcNjMk/%5Bcss%5D%5Bdiv%5D%5Btable%5Drandom-color.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[css][div][table]random-color.html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>CSS/Cookbook</category>
      <author>1Q74</author>
      <guid isPermaLink="true">https://1q74.tistory.com/83</guid>
      <comments>https://1q74.tistory.com/83#entry83comment</comments>
      <pubDate>Thu, 16 Mar 2023 12:26:40 +0900</pubDate>
    </item>
    <item>
      <title>【jQuery/Selector #62】:visible Selector</title>
      <link>https://1q74.tistory.com/82</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Description&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;jQuery(&quot;:visible&quot;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;visible한(보여지고 있는) Element들을 찾는다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;document안에서 공간을 차지하고 있는 Element는 visible로 인식되기 때문에, visibility: hidden이나 opacity: 0도 visible Element로 인식된다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;document&amp;nbsp;안에&amp;nbsp;존재하지&amp;nbsp;않는&amp;nbsp;Element들은&amp;nbsp;hidden&amp;nbsp;Element로&amp;nbsp;인식된다.&amp;nbsp;해당&amp;nbsp;Element가&amp;nbsp;style이&amp;nbsp;적용되어서&amp;nbsp;visible하게&amp;nbsp;될&amp;nbsp;지&amp;nbsp;그렇지&amp;nbsp;않을지&amp;nbsp;jQuery로서는&amp;nbsp;알&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;방법이&amp;nbsp;없기&amp;nbsp;때문이다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;visible selector는 hidden selector의 정반대 selector이다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&amp;lt;option&amp;gt;은&amp;nbsp;selected여부와&amp;nbsp;관계없이&amp;nbsp;hidden&amp;nbsp;Element로&amp;nbsp;간주된다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;jQuery 3부터는 &amp;lt;br/&amp;gt;또는 inline Element와 같이 어떤 내용도 갖지 않는 Element들도 visible selector로 선택될 수 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Example&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#1버튼을 클릭하면 배경색이 초기화된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#2버튼을 클릭하면 visible Element를 가지고 있는 &amp;lt;td&amp;gt;의 배경색을 변경한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#3버튼을 클릭하면 hidden Element를 가지고 있는 &amp;lt;td&amp;gt;의 배경색을 변경한다.&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;style1&quot; /&gt;
&lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&gt;
&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;[1q74.tistory.com] javascript/jquery/selector/visible&lt;/title&gt;
&lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

	&lt;div name=&quot;_1q74-example-root&quot;&gt;
		&lt;div name=&quot;_1q74-example-1&quot;&gt;
			&lt;h4&gt;Input Collections!!&lt;/h4&gt;
			&lt;table name=&quot;bigtech&quot; border=&quot;1&quot;&gt;
				&lt;tr&gt;
					&lt;td&gt;
						&lt;input type=&quot;text&quot; name=&quot;text&quot; value=&quot;[type='text']&quot;/&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td&gt;
						&lt;input type=&quot;button&quot; name=&quot;button&quot; value=&quot;[type='button']&quot;/&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td&gt;
						&lt;input type=&quot;image&quot; name=&quot;image&quot; src=&quot;https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png&quot;/&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
					&lt;td&gt;
						&lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;[type='submit']&quot;/&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td&gt;
						&lt;input type=&quot;file&quot; name=&quot;file&quot; value=&quot;[type='file']&quot;/&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td&gt;
						&lt;input type=&quot;password&quot; name=&quot;password&quot; value=&quot;[type='password']&quot;/&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td&gt;
						&lt;input type=&quot;reset&quot; name=&quot;reset&quot; value=&quot;[type='reset']&quot;/&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td&gt;
						&lt;input type=&quot;radio&quot; name=&quot;radio&quot; value=&quot;[type='radio']&quot;/&gt;[type=&quot;radio&quot;]
					&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td&gt;
						&lt;input type=&quot;checkbox&quot; name=&quot;checkbox&quot; value=&quot;[type='checkbox']&quot;/&gt;[type=&quot;checkbox&quot;]
					&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td&gt;
						&lt;select name=&quot;select&quot;&gt;
							&lt;option&gt;option-1&lt;/option&gt;
							&lt;option&gt;option-2&lt;/option&gt;
							&lt;option&gt;option-3&lt;/option&gt;
						&lt;/select&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td&gt;
						&lt;textarea&gt;textarea&lt;/textarea&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td&gt;
						[type=&quot;hidden&quot;] is here...
						&lt;input type=&quot;hidden&quot; name=&quot;hidden&quot; value=&quot;hidden&quot;/&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td&gt;
						&amp;lt;br&amp;gt; is here...
						&lt;br/&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
			&lt;/table&gt;
		&lt;/div&gt;

		&lt;div name=&quot;_1q74-example-bottom&quot;&gt;
			&lt;br/&gt;
			&lt;button name=&quot;btn-initialize&quot;&gt;#1. 초기화&lt;/button&gt;&lt;br/&gt;
			&lt;br/&gt;
			&lt;button name=&quot;btn-find-visible&quot;&gt;#2. $(&quot;[name='_1q74-example-1'] :visible&quot;)&lt;/button&gt;&lt;br/&gt;
			&lt;button name=&quot;btn-find-hidden&quot;&gt;#3. $(&quot;[name='_1q74-example-1'] :hidden&quot;)&lt;/button&gt;
		&lt;/div&gt;
	&lt;/div&gt;

	&lt;hr/&gt;
	&lt;h5&gt;[HTML Code]&lt;/h5&gt;
	&lt;div name=&quot;_1q74-source&quot;&gt;
	&lt;/div&gt;
	&lt;h5&gt;[//HTML Code]&lt;/h5&gt;

&lt;script&gt;
var visibleElements = $(&quot;[name='_1q74-example-1'] td :visible&quot;);
var hiddenElements = $(&quot;[name='_1q74-example-1'] td :hidden&quot;);
var btnInitialize = $(&quot;[name='_1q74-example-bottom'] [name='btn-initialize']&quot;);
var btnFindVisible = $(&quot;[name='_1q74-example-bottom'] [name='btn-find-visible']&quot;);
var btnFindHidden = $(&quot;[name='_1q74-example-bottom'] [name='btn-find-hidden']&quot;);

var rainbowColors = [
	&quot;red&quot;,
	&quot;orange&quot;,
	&quot;yellow&quot;,
	&quot;green&quot;,
	&quot;blue&quot;,
	&quot;navy&quot;,
	&quot;purple&quot;
];
var visibleClickCount = 0;
var hiddenClickCount = 0;


function changeBackground(elements, clickCount) {
	elements.each(function(i, el) {
		const element = $(el);
		let colorIndex = i + clickCount;

		if(colorIndex &gt;= rainbowColors.length) {
			colorIndex %= rainbowColors.length;
		}

		if(!element.is(&quot;[style]&quot;)) {
			element.parent().css(&quot;background&quot;, rainbowColors[colorIndex]);
		}
	});
}

btnInitialize.click(function() {
	$.each([visibleElements, hiddenElements], function(i, el) {
		const element = $(el);
		element.parent().removeAttr(&quot;style&quot;);
	});
});

btnFindVisible.click(function() {
	changeBackground(visibleElements, visibleClickCount);
	++visibleClickCount;
});

btnFindHidden.click(function() {
	changeBackground(hiddenElements, hiddenClickCount);
	++hiddenClickCount;
});

// ------------------------------------------------------
// 소스출력
// ------------------------------------------------------
var textSource = $(&quot;[name='_1q74-source']&quot;);
var exampleHtml = $(&quot;[name='_1q74-example-root']&quot;).html();
var specialCharLines = textSource.text(exampleHtml).html().split(&quot;\n&quot;);

textSource.html(specialCharLines.join(&quot;&lt;br/&gt;&quot;).replaceAll(&quot;\t&quot;, &quot;&amp;nbsp;&amp;nbsp;&quot;));
&lt;/script&gt;
&lt;style&gt;
[name=&quot;_1q74-example-root&quot;] {
	min-height: 200px;
}

[name=&quot;_1q74-example-1&quot;] {
	min-height: 170px;
}

[name=&quot;_1q74-example-bottom&quot;] {
	min-height: 150px;
}

[name=&quot;_1q74-example-root&quot;] [type=&quot;image&quot;]{
	width: 100px;
}

[name=&quot;_1q74-example-1&quot;] td {
	min-width: 100px;
	min-height: 30px;
}

[name|=&quot;_1q74-example&quot;] button
,[name=&quot;_1q74-source&quot;] button {
	background: lightgray;
	border: 5px outset;
	min-height: 40px;
}

[name|=&quot;_1q74-example&quot;] button:active
,[name=&quot;_1q74-source&quot;] button:active {
	border: 2px inset;
	min-height: 40px;
}
&lt;/style&gt;

&lt;/body&gt;
&lt;/html&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. Code&lt;/h3&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1678859975104&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!-- ---------------------------------------------------------
  --
  -- Author: 1q74.tistory.com
  --
  --------------------------------------------------------- --&amp;gt;
&amp;lt;!doctype html&amp;gt;
&amp;lt;html lang=&quot;ko&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;utf-8&quot;&amp;gt;
&amp;lt;title&amp;gt;[1q74.tistory.com] javascript/jquery/selector/visible&amp;lt;/title&amp;gt;
&amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

	&amp;lt;div name=&quot;_1q74-example-root&quot;&amp;gt;
		&amp;lt;div name=&quot;_1q74-example-1&quot;&amp;gt;
			&amp;lt;h4&amp;gt;Input Collections!!&amp;lt;/h4&amp;gt;
			&amp;lt;table name=&quot;bigtech&quot; border=&quot;1&quot;&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td&amp;gt;
						&amp;lt;input type=&quot;text&quot; name=&quot;text&quot; value=&quot;[type='text']&quot;/&amp;gt;
					&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td&amp;gt;
						&amp;lt;input type=&quot;button&quot; name=&quot;button&quot; value=&quot;[type='button']&quot;/&amp;gt;
					&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td&amp;gt;
						&amp;lt;input type=&quot;image&quot; name=&quot;image&quot; src=&quot;https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png&quot;/&amp;gt;
					&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
					&amp;lt;td&amp;gt;
						&amp;lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;[type='submit']&quot;/&amp;gt;
					&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td&amp;gt;
						&amp;lt;input type=&quot;file&quot; name=&quot;file&quot; value=&quot;[type='file']&quot;/&amp;gt;
					&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td&amp;gt;
						&amp;lt;input type=&quot;password&quot; name=&quot;password&quot; value=&quot;[type='password']&quot;/&amp;gt;
					&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td&amp;gt;
						&amp;lt;input type=&quot;reset&quot; name=&quot;reset&quot; value=&quot;[type='reset']&quot;/&amp;gt;
					&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td&amp;gt;
						&amp;lt;input type=&quot;radio&quot; name=&quot;radio&quot; value=&quot;[type='radio']&quot;/&amp;gt;[type=&quot;radio&quot;]
					&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td&amp;gt;
						&amp;lt;input type=&quot;checkbox&quot; name=&quot;checkbox&quot; value=&quot;[type='checkbox']&quot;/&amp;gt;[type=&quot;checkbox&quot;]
					&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td&amp;gt;
						&amp;lt;select name=&quot;select&quot;&amp;gt;
							&amp;lt;option&amp;gt;option-1&amp;lt;/option&amp;gt;
							&amp;lt;option&amp;gt;option-2&amp;lt;/option&amp;gt;
							&amp;lt;option&amp;gt;option-3&amp;lt;/option&amp;gt;
						&amp;lt;/select&amp;gt;
					&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td&amp;gt;
						&amp;lt;textarea&amp;gt;textarea&amp;lt;/textarea&amp;gt;
					&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td&amp;gt;
						[type=&quot;hidden&quot;] is here...
						&amp;lt;input type=&quot;hidden&quot; name=&quot;hidden&quot; value=&quot;hidden&quot;/&amp;gt;
					&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td&amp;gt;
						&amp;amp;lt;br&amp;amp;gt; is here...
						&amp;lt;br/&amp;gt;
					&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
			&amp;lt;/table&amp;gt;
		&amp;lt;/div&amp;gt;

		&amp;lt;div name=&quot;_1q74-example-bottom&quot;&amp;gt;
			&amp;lt;br/&amp;gt;
			&amp;lt;button name=&quot;btn-initialize&quot;&amp;gt;#1. 초기화&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;
			&amp;lt;br/&amp;gt;
			&amp;lt;button name=&quot;btn-find-visible&quot;&amp;gt;#2. $(&quot;[name='_1q74-example-1'] :visible&quot;)&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;
			&amp;lt;button name=&quot;btn-find-hidden&quot;&amp;gt;#3. $(&quot;[name='_1q74-example-1'] :hidden&quot;)&amp;lt;/button&amp;gt;
		&amp;lt;/div&amp;gt;
	&amp;lt;/div&amp;gt;

	&amp;lt;hr/&amp;gt;
	&amp;lt;h5&amp;gt;[HTML Code]&amp;lt;/h5&amp;gt;
	&amp;lt;div name=&quot;_1q74-source&quot;&amp;gt;
	&amp;lt;/div&amp;gt;
	&amp;lt;h5&amp;gt;[//HTML Code]&amp;lt;/h5&amp;gt;

&amp;lt;script&amp;gt;
var visibleElements = $(&quot;[name='_1q74-example-1'] td :visible&quot;);
var hiddenElements = $(&quot;[name='_1q74-example-1'] td :hidden&quot;);
var btnInitialize = $(&quot;[name='_1q74-example-bottom'] [name='btn-initialize']&quot;);
var btnFindVisible = $(&quot;[name='_1q74-example-bottom'] [name='btn-find-visible']&quot;);
var btnFindHidden = $(&quot;[name='_1q74-example-bottom'] [name='btn-find-hidden']&quot;);

var rainbowColors = [
	&quot;red&quot;,
	&quot;orange&quot;,
	&quot;yellow&quot;,
	&quot;green&quot;,
	&quot;blue&quot;,
	&quot;navy&quot;,
	&quot;purple&quot;
];
var visibleClickCount = 0;
var hiddenClickCount = 0;


function changeBackground(elements, clickCount) {
	elements.each(function(i, el) {
		const element = $(el);
		let colorIndex = i + clickCount;

		if(colorIndex &amp;gt;= rainbowColors.length) {
			colorIndex %= rainbowColors.length;
		}

		if(!element.is(&quot;[style]&quot;)) {
			element.parent().css(&quot;background&quot;, rainbowColors[colorIndex]);
		}
	});
}

btnInitialize.click(function() {
	$.each([visibleElements, hiddenElements], function(i, el) {
		const element = $(el);
		element.parent().removeAttr(&quot;style&quot;);
	});
});

btnFindVisible.click(function() {
	changeBackground(visibleElements, visibleClickCount);
	++visibleClickCount;
});

btnFindHidden.click(function() {
	changeBackground(hiddenElements, hiddenClickCount);
	++hiddenClickCount;
});

// ------------------------------------------------------
// 소스출력
// ------------------------------------------------------
var textSource = $(&quot;[name='_1q74-source']&quot;);
var exampleHtml = $(&quot;[name='_1q74-example-root']&quot;).html();
var specialCharLines = textSource.text(exampleHtml).html().split(&quot;\n&quot;);

textSource.html(specialCharLines.join(&quot;&amp;lt;br/&amp;gt;&quot;).replaceAll(&quot;\t&quot;, &quot;&amp;amp;nbsp;&amp;amp;nbsp;&quot;));
&amp;lt;/script&amp;gt;
&amp;lt;style&amp;gt;
[name=&quot;_1q74-example-root&quot;] {
	min-height: 200px;
}

[name=&quot;_1q74-example-1&quot;] {
	min-height: 170px;
}

[name=&quot;_1q74-example-bottom&quot;] {
	min-height: 150px;
}

[name=&quot;_1q74-example-root&quot;] [type=&quot;image&quot;]{
	width: 100px;
}

[name=&quot;_1q74-example-1&quot;] td {
	min-width: 100px;
	min-height: 30px;
}

[name|=&quot;_1q74-example&quot;] button
,[name=&quot;_1q74-source&quot;] button {
	background: lightgray;
	border: 5px outset;
	min-height: 40px;
}

[name|=&quot;_1q74-example&quot;] button:active
,[name=&quot;_1q74-source&quot;] button:active {
	border: 2px inset;
	min-height: 40px;
}
&amp;lt;/style&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. File&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/dsGU9N/btr3U22cmC1/vhfLOxhd8k89NXLI9bz3P0/%5Bjavascript%5D%5Bjquery%5D%5Bselector%5Dvisible.html?attach=1&amp;amp;knm=tfile.html&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;[javascript][jquery][selector]visible.html&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. See also&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;background-color: #f8f8f8; color: #3d62ce; text-align: start;&quot; href=&quot;https://1q74.tistory.com/29&quot;&gt;pseudo-class&lt;/a&gt;&lt;span style=&quot;background-color: #f8f8f8; color: #555555; text-align: start;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;background-color: #f8f8f8; color: #3d62ce; text-align: start;&quot; href=&quot;https://1q74.tistory.com/30&quot;&gt;useversal-selector&lt;/a&gt;&lt;span style=&quot;background-color: #f8f8f8; color: #555555; text-align: start;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;background-color: #f8f8f8; color: #3d62ce; text-align: start;&quot; href=&quot;https://1q74.tistory.com/31&quot;&gt;jquery-extensions&lt;/a&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;a title=&quot;hidden selector&quot; href=&quot;https://1q74.tistory.com/50&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;:hidden selector&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1678860079087&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;【jQuery/Selector #32】:hidden Selector&quot; data-og-description=&quot;1. Description jQuery( &amp;quot;:hidden&amp;quot; ) : 숨겨진 모든 Element들을 찾는다. 다음의 경우 숨겨진 Element로 취급될 수 있다. display:none으로 설정된 경우 input type=&amp;quot;hidden&amp;quot;으로 설정된 경우 width와 height가 0으로 설정된 &quot; data-og-host=&quot;1q74.tistory.com&quot; data-og-source-url=&quot;https://1q74.tistory.com/50&quot; data-og-url=&quot;https://1q74.tistory.com/50&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/VR447/hyRWqZaVi1/K6TOutg6LEtCbsmCrgqBxk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/x5E9Z/hyRU2lkwVe/utlLCZsrAdQxh1zpZ4NKMK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/lSaiC/hyRU6OK6mU/Djjv7jZbf1GVmzWYO8zHvk/img.jpg?width=1611&amp;amp;height=2149&amp;amp;face=0_0_1611_2149&quot;&gt;&lt;a href=&quot;https://1q74.tistory.com/50&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://1q74.tistory.com/50&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/VR447/hyRWqZaVi1/K6TOutg6LEtCbsmCrgqBxk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/x5E9Z/hyRU2lkwVe/utlLCZsrAdQxh1zpZ4NKMK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/lSaiC/hyRU6OK6mU/Djjv7jZbf1GVmzWYO8zHvk/img.jpg?width=1611&amp;amp;height=2149&amp;amp;face=0_0_1611_2149');&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;【jQuery/Selector #32】:hidden Selector&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. Description jQuery( &quot;:hidden&quot; ) : 숨겨진 모든 Element들을 찾는다. 다음의 경우 숨겨진 Element로 취급될 수 있다. display:none으로 설정된 경우 input type=&quot;hidden&quot;으로 설정된 경우 width와 height가 0으로 설정된&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;1q74.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. Reference&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://api.jquery.com/visible-selector/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://api.jquery.com/visible-selector/&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>JavaScript/jQuery</category>
      <category>jQuery</category>
      <category>selector</category>
      <category>visible</category>
      <author>1Q74</author>
      <guid isPermaLink="true">https://1q74.tistory.com/82</guid>
      <comments>https://1q74.tistory.com/82#entry82comment</comments>
      <pubDate>Wed, 15 Mar 2023 15:02:57 +0900</pubDate>
    </item>
  </channel>
</rss>