Skip to content

Latest commit

ย 

History

History
379 lines (254 loc) ยท 16.8 KB

File metadata and controls

379 lines (254 loc) ยท 16.8 KB

์•Œ์•„๊ฐ€๋Š” ๊ฒƒ๋“ค

1. javascript:void(0); ๊ฐœ๋… ์ •๋ฆฌ

javascript:void(0);์€ JavaScript์—์„œ ์•„๋ฌด๋Ÿฐ ๋™์ž‘์„ ํ•˜์ง€ ์•Š๊ณ , ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์ด๋™์‹œํ‚ค์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ๋งํฌ(<a>) ์š”์†Œ์— ์‚ฌ์šฉ๋˜์–ด, ๋งํฌ๊ฐ€ ํด๋ฆญ๋˜์—ˆ์„ ๋•Œ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์•„๋ฌด ํŽ˜์ด์ง€ ์•ก์…˜์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์“ฐ์ž…๋‹ˆ๋‹ค.

javascript:void(0);์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€

<a href="javascript:void(0);">Click me</a>

์œ„์˜ ์ฝ”๋“œ์—์„œ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋”๋ผ๋„ ํŽ˜์ด์ง€๊ฐ€ ๋‹ค์‹œ ๋กœ๋“œ๋˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์ด๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ฃผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ๋งŒ ๋™์ž‘์„ ์ œ์–ดํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

2. ํด๋ฆญ ์ด๋ฒคํŠธ

$(".ํด๋ž˜์Šค๋ช…").click(function () {
    eventWinPop("");
});

๋งŒ์•ฝ ํด๋ž˜์Šค๋ช…์ด ๊ณต๋ฐฑ์œผ๋กœ layout new ์ด๋Ÿฐ์‹์ด๋ผ๋ฉด

.layout.new๋กœ ์ •์˜ํ•ด์•ผ ํ•จ

3. ๋งํฌ์—์„œ ํŽ˜์ด์ง€ ์ƒ๋‹จ์œผ๋กœ ์Šคํฌ๋กค ๋ฐฉ์ง€

HTML์˜ <a href="#top"> ๊ฐ™์€ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ํŽ˜์ด์ง€ ์ƒ๋‹จ์œผ๋กœ ์ด๋™ํ•˜์ง€๋งŒ, javascript:void(0);๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋งํฌ๋ฅผ ํด๋ฆญํ•ด๋„ ํŽ˜์ด์ง€๊ฐ€ ์Šคํฌ๋กค๋˜๊ฑฐ๋‚˜ ์ด๋™ํ•˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŽ˜์ด์ง€ ์ƒ๋‹จ์œผ๋กœ ์Šคํฌ๋กค์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

html์ฝ”๋“œ ๋ณต์‚ฌ<a href="javascript:void(0);" onclick="scrollToTop();">Scroll to Top</a>

<script>
function scrollToTop() {
  window.scrollTo({top: 0, behavior: 'smooth'});
}
</script>

์œ„ ์ฝ”๋“œ๋Š” ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ํŽ˜์ด์ง€ ์ƒ๋‹จ์œผ๋กœ ์Šคํฌ๋กค๋˜๋„๋ก ํ•˜๋Š” ๋™์ž‘์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋งํฌ๋Š” javascript:void(0);์„ ์‚ฌ์šฉํ•ด ๊ธฐ๋ณธ ์ด๋™์„ ๋ฐฉ์ง€ํ•˜๊ณ , JavaScript ํ•จ์ˆ˜๋กœ ์Šคํฌ๋กค์„ ์ง์ ‘ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

4. onclick="ํ•จ์ˆ˜๋ช…(event);

ํด๋ฆญ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•จ์ˆ˜๋ช… ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

event๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ด๋ฒคํŠธ ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ์ฒด๋Š” ํŠน์ • ์ด๋ฒคํŠธ(์˜ˆ: ํด๋ฆญ, ํ‚ค๋ณด๋“œ ์ž…๋ ฅ ๋“ฑ)๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํ•ด๋‹น ์ด๋ฒคํŠธ์™€ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ๋กœ ์„ค๋ช…:

<a href="javascript:void(0);" onclick="handleClick(event)">ํด๋ฆญํ•˜์„ธ์š”</a>

์œ„ HTML์—์„œ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด handleClick ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ, event๋ผ๋Š” ๊ฐ์ฒด๊ฐ€ ์ž๋™์œผ๋กœ ํ•จ์ˆ˜์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

JavaScript:

jfunction handleClick(event) {
    console.log(event); // ํด๋ฆญ ์ด๋ฒคํŠธ์™€ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์ถœ๋ ฅ
    event.preventDefault(); // ๊ธฐ๋ณธ ๋™์ž‘(์˜ˆ: ๋งํฌ ์ด๋™)์„ ๋ง‰์Œ
}

event ๊ฐ์ฒด์˜ ์ฃผ์š” ์—ญํ• :

  1. ์ด๋ฒคํŠธ์˜ ๊ธฐ๋ณธ ๋™์ž‘์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Œ: ์˜ˆ๋ฅผ ๋“ค์–ด, ๋งํฌ ํด๋ฆญ ์‹œ ํŽ˜์ด์ง€๊ฐ€ ์ด๋™ํ•˜๋Š” ๊ธฐ๋ณธ ๋™์ž‘์„ event.preventDefault()๋กœ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ: event.target์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ•œ ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์ด๋ฒคํŠธ์˜ ์ „ํŒŒ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Œ: event.stopPropagation()์„ ํ†ตํ•ด ์ด๋ฒคํŠธ๊ฐ€ ๋ถ€๋ชจ ์š”์†Œ๋กœ ์ „ํŒŒ๋˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ:

  • event.target: ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ.
  • event.preventDefault(): ๊ธฐ๋ณธ ๋™์ž‘์„ ๋ง‰์Œ (์˜ˆ: ๋งํฌ ํด๋ฆญ ์‹œ ํŽ˜์ด์ง€ ์ด๋™).
  • event.stopPropagation(): ์ด๋ฒคํŠธ๊ฐ€ ๋ถ€๋ชจ ์š”์†Œ๋กœ ์ „ํŒŒ๋˜๋Š” ๊ฒƒ์„ ๋ง‰์Œ.

event ๊ฐ์ฒด๋Š” ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ์™€ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์—ฌ, ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ•œ ์œ„์น˜, ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ ์ข…๋ฅ˜ ๋“ฑ์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค๋‹ˆ๋‹ค.

๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ

  1. ์ด๋ฒคํŠธ ๊ฐ์ฒด ์ „๋‹ฌ ์—ฌ๋ถ€:

    • event ๊ฐ์ฒด๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž๋™์œผ๋กœ ์ „๋‹ฌ๋˜๋ฏ€๋กœ, onclick="ํ•จ์ˆ˜๋ช…(event)"๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ œ๋Œ€๋กœ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ event ๊ฐ์ฒด๋ฅผ ํ•จ์ˆ˜์—์„œ ์ˆ˜์‹ ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด, ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ถ€๋ถ„์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”: onclick="myFunction(event)"
  2. ์ด๋ฒคํŠธ ๊ฐ์ฒด์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€:

    • event ๊ฐ์ฒด๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HTML ์š”์†Œ์˜ onclick ์†์„ฑ์—์„œ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์˜ˆ์‹œ:

    <a href="#" onclick="handleClick(event)">ํด๋ฆญํ•˜์„ธ์š”</a>
  3. ๊ธฐ๋ณธ ๋™์ž‘์ด ๋ง‰ํžˆ์ง€ ์•Š๋Š” ๋ฌธ์ œ:

    • event.preventDefault()๋ฅผ ํ˜ธ์ถœํ•ด๋„ ๊ธฐ๋ณธ ๋™์ž‘(์˜ˆ: ๋งํฌ ์ด๋™)์ด ๋ง‰ํžˆ์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ด๋ฒคํŠธ ๊ฐ์ฒด๊ฐ€ ์ œ๋Œ€๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š๊ฑฐ๋‚˜, ์ด๋ฒคํŠธ๊ฐ€ ์ž˜๋ชป๋œ ๋ฐฉ์‹์œผ๋กœ ๋ฐ”์ธ๋”ฉ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • event.preventDefault()๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ „์— ํŽ˜์ด์ง€๊ฐ€ ์ด๋™ํ•˜๋Š” ๋“ฑ์˜ ๋™์ž‘์ด ์ผ์–ด๋‚˜๋ฉด, ์ด๋ฒคํŠธ ๊ฐ์ฒด๋ฅผ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  4. ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•: ๋งŒ์•ฝ onclick="ํ•จ์ˆ˜๋ช…(event)"์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด, ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์˜ˆ์‹œ: ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ (์ถ”์ฒœ ๋ฐฉ์‹)

    <a href="#" id="myLink">ํด๋ฆญํ•˜์„ธ์š”</a>
    javascript์ฝ”๋“œ ๋ณต์‚ฌdocument.getElementById("myLink").addEventListener("click", function(event) {
        event.preventDefault(); // ๊ธฐ๋ณธ ๋™์ž‘์„ ๋ง‰์Œ
        alert("์ด๋ฒคํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
    });

    ์ด ๋ฐฉ์‹์—์„œ๋Š” event ๊ฐ์ฒด๊ฐ€ ์ž๋™์œผ๋กœ ํ•จ์ˆ˜์— ์ „๋‹ฌ๋˜๋ฉฐ, preventDefault()๋„ ํ™•์‹คํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์š”์•ฝ:

  • event ๊ฐ์ฒด๊ฐ€ ์ „๋‹ฌ๋˜์ง€ ์•Š์œผ๋ฉด: onclick ์†์„ฑ์—์„œ ์ง์ ‘ ์ „๋‹ฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ฑฐ๋‚˜, ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • event.preventDefault()๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด: ์ด๋ฒคํŠธ๊ฐ€ ์ œ๋Œ€๋กœ ๋ฐ”์ธ๋”ฉ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๋ฆฌ์Šค๋„ˆ๋ฅผ ์‚ฌ์šฉํ•ด ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”.

5. ํด๋ž˜์Šค๋ช…์ด ์•ž์—๋งŒ ๊ฐ™์€ ์• ๋“ค ์ด๋ฒคํŠธ ์ ์šฉ

div ์˜์—ญ์— ์žˆ๋Š” class๋ช…์ด pic_box_po_01, pic_box_po_02, pic_box_po_03 ...์ด๋Ÿฐ์‹์œผ๋กœ 10๊นŒ์ง€ ์žˆ๋‹ค $(".pic)_boc_po").on("click:) ์ด๋Ÿฐ์‹์œผ๋กœ ํ•˜๋ฉด ๋ชจ๋“  ์• ๋“ค์ด ์ ์šฉ๋˜๋‚˜

$(".pic_box_po")๋กœ๋Š” ํ•ด๋‹น ์š”์†Œ๋“ค์„ ์„ ํƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. jQuery์˜ ํด๋ž˜์Šค ์„ ํƒ์ž๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์ด ์™„์ „ํžˆ ์ผ์น˜ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, pic_box_po_01, pic_box_po_02์ฒ˜๋Ÿผ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™์€ ํด๋ž˜์Šค๋“ค์„ ์„ ํƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ ‘๋‘์‚ฌ๋กœ ์ผ์น˜ํ•˜๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” jQuery์˜ ์†์„ฑ ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ• ์ ‘๋‘์‚ฌ๊ฐ€ ๋™์ผํ•œ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์„ ํƒํ•˜๋ ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ^= (์‹œ์ž‘ ๋ฌธ์ž ์ผ์น˜) ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ ‘๋‘์‚ฌ๊ฐ€ ๋™์ผํ•œ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์„ ํƒํ•˜๋ ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ^= (์‹œ์ž‘ ๋ฌธ์ž ์ผ์น˜) ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$("[class^='pic_box_po']").on("click", function() {
    // ํด๋ฆญ ์‹œ ์‹คํ–‰ํ•  ์ฝ”๋“œ
});

์„ค๋ช…

  • ^=๋Š” "์ ‘๋‘์‚ฌ๋กœ ์‹œ์ž‘"์„ ์˜๋ฏธํ•˜๋Š” ์„ ํƒ์ž์ž…๋‹ˆ๋‹ค.
  • "[class^='pic_box_po']"๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์ด pic_box_po๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ์š”์†Œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด pic_box_po_01, pic_box_po_02 ๋“ฑ pic_box_po_๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ์š”์†Œ์— ํด๋ฆญ ์ด๋ฒคํŠธ๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

6. ๋‹จ์ผ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ, ์—ฌ๋Ÿฌ ๊ฐœ ์ฒ˜๋ฆฌ

์ฝ”๋“œ์—์„œ missionCt == 2 ์ด์ƒ์ผ ๋•Œ ์ด๋ฏธ์ง€ step02_off.png๊ฐ€ step02_on.png๋กœ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” imgElement์˜ src๊ฐ€ ์ด๋ฏธ step01_on.png๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. imgElement๋Š” .event_status img๋กœ ์„ ํƒ๋œ ๋‹จ์ผ ์ด๋ฏธ์ง€ ์š”์†Œ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ด ์ฝ”๋“œ๋กœ๋Š” ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.


๋ฌธ์ œ ๋ถ„์„

var missionCt = 0;
const imgElement = document.querySelector('.event_status img');
										
if (missionCt == 3) {
	if (imgElement.src.includes('step01_off.png')) {
		imgElement.src = imgElement.src.replace('step01_off.png', 'step01_on.png');}
												
	if (imgElement.src.includes('step02_off.png')) {
	        imgElement.src = imgElement.src.replace('step02_off.png', 'step02_on.png');}
												
	if (imgElement.src.includes('step03_off.png')) {
		imgElement.src = imgElement.src.replace('step03_off.png', 'step03_on.png');}
											} 											}
  1. imgElement๋Š” ๋‹จ์ผ ์ด๋ฏธ์ง€ ์š”์†Œ๋ฅผ ์ฐธ์กฐ:
    • imgElement๋Š” .event_status img ์…€๋ ‰ํ„ฐ๋กœ ์„ ํƒ๋œ ์ฒซ ๋ฒˆ์งธ img ์š”์†Œ๋งŒ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ step02_off.png, step03_off.png ๋“ฑ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค ํ•ด๋„ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€๋ฅผ ์ฐธ์กฐํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
  2. ํ•œ ๊ฐœ์˜ ์ด๋ฏธ์ง€์—์„œ ์กฐ๊ฑด๋ฌธ์„ ์ฒ˜๋ฆฌ:
    • if (imgElement.src.includes('step01_off.png')) { ... }๋กœ ์ฒซ ๋ฒˆ์งธ ์ด๋ฏธ์ง€๋ฅผ ๋ณ€๊ฒฝํ•œ ์ดํ›„, ๊ฐ™์€ imgElement์—์„œ step02_off.png๋ฅผ ์ฐพ์œผ๋ ค ํ•˜์ง€๋งŒ ํ•ด๋‹น ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์กฐ๊ฑด์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
  3. ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒ ๋ฐ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์Œ:
    • document.querySelector๋Š” ์ฒซ ๋ฒˆ์งธ img ์š”์†Œ๋งŒ ์„ ํƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์ˆ˜์˜ ์ด๋ฏธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์ˆ˜์ •

์ˆ˜์ •๋œ ์ฝ”๋“œ

const imgElements = document.querySelectorAll('.event_status img'); // ๋ชจ๋“  img ํƒœ๊ทธ ์„ ํƒ

if (data.evegeYn == 'Y') {
    missionCt = missionCt + 1;

    if (data.stdourseCt > 0) {
        missionCt = missionCt + 1;
    }

    if (data.stdyount >= 4) {
        missionCt = missionCt + 1;
    }

    if (data.lmsnt > 0) {
        missionCt = missionCt + 1;
    }

    // ๋ฏธ์…˜ ์ˆ˜์— ๋”ฐ๋ผ ์ด๋ฏธ์ง€ ์ƒํƒœ ๋ณ€๊ฒฝ
    imgElements.forEach((imgElement, index) => {
        const stepIndex = index + 1; // step01, step02, etc.
        if (missionCt >= stepIndex) {
            imgElement.src = imgElement.src.replace(`step0${stepIndex}_off.png`, `step0${stepIndex}_on.png`);
        }
    });
}

๋ณ€๊ฒฝ ๋‚ด์šฉ ์„ค๋ช…

  1. document.querySelectorAll ์‚ฌ์šฉ:
    • querySelectorAll๋กœ .event_status ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ ๋ชจ๋“  img ์š”์†Œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐ˜ํ™˜๋œ NodeList๋Š” ๊ฐ ์ด๋ฏธ์ง€ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. forEach๋กœ ์ด๋ฏธ์ง€ ๋ฐ˜๋ณต ์ฒ˜๋ฆฌ:
    • ๊ฐ ์ด๋ฏธ์ง€์˜ ์ˆœ์„œ๋ฅผ index๋กœ ์ฐธ์กฐํ•˜์—ฌ step01, step02, ...์™€ ๋งค์นญํ•ฉ๋‹ˆ๋‹ค.
    • missionCount๊ฐ€ ํ•ด๋‹น stepIndex๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์ด๋ฏธ์ง€๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  3. ๋™์  ํŒŒ์ผ๋ช… ์ƒ์„ฑ:
    • step0${stepIndex}_off.png์™€ step0${stepIndex}_on.png๋กœ ํŒŒ์ผ๋ช…์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜์—ฌ ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค

7. imgElements.length >= 2๋Š” ์™œ ๋„ฃ๋Š” ๊ฑฐ์•ผ?

ChatGPT์˜ ๋ง:

ChatGPT

imgElements.length >= 2๋Š” ์•ˆ์ „ํ•œ ์ฝ”๋“œ ์‹คํ–‰์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€๋œ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค. ์ด ์กฐ๊ฑด์€ ์ด๋ฏธ์ง€ ๋ฐฐ์—ด(imgElements)์— ์ถฉ๋ถ„ํ•œ ๊ฐœ์ˆ˜์˜ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด ์ธ๋ฑ์Šค ์ดˆ๊ณผ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ , ์ฝ”๋“œ ์‹คํ–‰ ์ค‘ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.


์™œ ํ•„์š”ํ•œ๊ฐ€?

1. imgElements์— ์ถฉ๋ถ„ํ•œ ์ด๋ฏธ์ง€๊ฐ€ ์—†์„ ๊ฒฝ์šฐ

๋งŒ์•ฝ imgElements ๋ฐฐ์—ด์— ์ด๋ฏธ์ง€๊ฐ€ 1๊ฐœ๋ฐ–์— ์—†๋Š”๋ฐ imgElements[1]๋ฅผ ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด, JavaScript์—์„œ๋Š” undefined๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ƒํƒœ์—์„œ undefined.src์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด:

const imgElements = document.querySelectorAll('.event_status img'); // img๊ฐ€ 1๊ฐœ๋ฟ์ผ ๋•Œ
console.log(imgElements[1].src); // TypeError: Cannot read properties of undefined (reading 'src')

2. ์กฐ๊ฑด๋ฌธ์ด ์‹คํŒจํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

๋งŒ์•ฝ ํŠน์ • ์กฐ๊ฑด(data.stdyCourseCount > 0)์„ ๋งŒ์กฑํ•˜๋”๋ผ๋„ ๋Œ€์ƒ ์ด๋ฏธ์ง€๊ฐ€ ์—†์œผ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.


์กฐ๊ฑด์ด ์—†๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ

๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ณด์„ธ์š”:

if (data > 0) {
    imgElements[1].src = imgElements[1].src.replace('step02_off.png', 'step02_on.png');
}

๋งŒ์•ฝ imgElements์— ์ด๋ฏธ์ง€๊ฐ€ 1๊ฐœ๋ฐ–์— ์—†๋‹ค๋ฉด:

  • imgElements[1]๋Š” undefined๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜(TypeError)๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

imgElements.length >= 2๊ฐ€ ํ•˜๋Š” ์—ญํ• 

if (data> 0 && imgElements.length >= 2) {
    imgElements[1].src = imgElements[1].src.replace('step02_off.png', 'step02_on.png');
}

์—ฌ๊ธฐ์„œ imgElements.length >= 2๋Š” ๋‹ค์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค:

  1. ์ด๋ฏธ์ง€๊ฐ€ ์ตœ์†Œ 2๊ฐœ ์žˆ์–ด์•ผ ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  2. ๋ฐฐ์—ด์˜ ๋‘ ๋ฒˆ์งธ ์ด๋ฏธ์ง€(imgElements[1])๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์‹คํ–‰์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์กฐ๊ฑด์ด ์—†๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

์กฐ๊ฑด ์—†์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด:

  • ์ด๋ฏธ์ง€๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ: imgElements[3]๋ฅผ ์ ‘๊ทผํ•˜๋ ค ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๋ฐฐ์—ด ๊ธธ์ด๊ฐ€ 3๋ณด๋‹ค ์ž‘์„ ๋•Œ.

์™œ ๊ฐ ์กฐ๊ฑด์— ๊ฐœ๋ณ„์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์กฐ๊ฑด๋ณ„๋กœ ํ™•์ธํ•˜๋Š” ์ด์œ ๋Š” ๋ฐฐ์—ด ๋‚ด์˜ ์ธ๋ฑ์Šค๋ฅผ ์ ‘๊ทผํ•  ๋•Œ ํ•ญ์ƒ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค. ๊ฐ ์กฐ๊ฑด์ด ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋ฏ€๋กœ, ํ•„์š”ํ•˜์ง€ ์•Š์€ ์กฐ๊ฑด๊นŒ์ง€ ๊ฒ€์ฆํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.


๊ฒฐ๋ก 

imgElements.length >= 2๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š”:

  • ๋ฐฐ์—ด ์ธ๋ฑ์Šค ์ดˆ๊ณผ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ.
  • ์ด๋ฏธ์ง€๊ฐ€ ๋ถ€์กฑํ•œ ์ƒํ™ฉ์—์„œ๋„ ์ฝ”๋“œ๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก ๋ณด์žฅ.
  • ๊ฐ ์กฐ๊ฑด์— ํ•„์š”ํ•œ ์ด๋ฏธ์ง€ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€๋œ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋Ÿฐ ์กฐ๊ฑด์€ ์ด๋ฏธ์ง€๊ฐ€ ๋™์ ์œผ๋กœ ๋กœ๋“œ๋˜๊ฑฐ๋‚˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ถˆํ™•์‹คํ•œ ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ˜Š

8. ์ตœ์ ํ™”๋œ ์ฝ”๋“œsuccess: function(data) {

    console.log('API Data:', data); // API ๋ฐ์ดํ„ฐ ํ™•์ธ
    const imgElements = document.querySelectorAll('.event_status img'); // ๋ชจ๋“  img ํƒœ๊ทธ ์„ ํƒ
    console.log('Selected Images:', imgElements); // ์„ ํƒ๋œ ์ด๋ฏธ์ง€ ์ถœ๋ ฅ

    // ํ•„์ˆ˜ ์กฐ๊ฑด ์ฒดํฌ
    if (data.en == 'Y' && imgElements.length >= 1) {
        console.log('Condition met: data.en == Y'); // ์กฐ๊ฑด ๋””๋ฒ„๊น…

        // ์กฐ๊ฑด ๋ฐฐ์—ด ์ •์˜
        const conditions = [
            { condition: true, index: 0, replace: 'step01_off.png', with: 'step01_on.png' }, // ํ•„์ˆ˜ ์กฐ๊ฑด
            { condition: data.stdyCour > 0, index: 1, replace: 'step02_off.png', with: 'step02_on.png' },
            { condition: data.stdyLec >= 4, index: 2, replace: 'step03_off.png', with: 'step03_on.png' },
            { condition: data.lmsPt > 0, index: 3, replace: 'step04_off.png', with: 'step04_on.png' }
        ];

        // ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌ
        conditions.forEach(({ condition, index, replace, with: replaceWith }) => {
            if (condition && imgElements.length > index) {
                imgElements[index].src = imgElements[index].src.replace(replace, replaceWith);
                console.log(`Updated Image ${index + 1}: ${imgElements[index].src}`);
            }
        });
    } else {
        console.log('Condition not met: data.eventAgreeYn != Y or no images found');
    }
}

์ตœ์ ํ™” ๋ฐฉ๋ฒ• ์„ค๋ช…

  1. ์กฐ๊ฑด ๋ฐฐ์—ด๋กœ ํ†ตํ•ฉ:
    • ๊ฐ ์กฐ๊ฑด(data.stdyCourseCount, data.stdyLectCount, data.lmsPstCount)์„ ๊ฐ์ฒด ๋ฐฐ์—ด๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
    • condition: ์‹คํ–‰ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์กฐ๊ฑด.
    • index: ํ•ด๋‹น ์ด๋ฏธ์ง€์˜ ์ธ๋ฑ์Šค.
    • replace ๋ฐ with: src๋ฅผ ๋ณ€๊ฒฝํ•  ํŒŒ์ผ๋ช… ์ •์˜.
  2. ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌ:
    • forEach๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ ์กฐ๊ฑด์„ ํ‰๊ฐ€ํ•˜๊ณ , ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋ฉด ์ด๋ฏธ์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
    • imgElements.length > index๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด ๋ฒ”์œ„ ์ดˆ๊ณผ๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  3. ํ•„์ˆ˜ ์กฐ๊ฑด ๋ณ„๋„ ์ฒ˜๋ฆฌ:
    • ์ฒซ ๋ฒˆ์งธ ์กฐ๊ฑด(data.eventAgreeYn == 'Y')์€ ํ•ญ์ƒ ์‹คํ–‰๋˜๋„๋ก ๋ฐฐ์—ด์— condition: true๋กœ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.
  4. ๋กœ๊ทธ ํ†ตํ•ฉ:
    • ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ ์—ฌ๋ถ€๋ฅผ ์ถœ๋ ฅํ•ด ๋””๋ฒ„๊น…์„ ์šฉ์ดํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์žฅ์ 

  1. ์ค‘๋ณต ์ฝ”๋“œ ์ œ๊ฑฐ:
    • ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  2. ํ™•์žฅ์„ฑ ํ–ฅ์ƒ:
    • ์กฐ๊ฑด์ด๋‚˜ ์ด๋ฏธ์ง€๊ฐ€ ์ถ”๊ฐ€๋  ๊ฒฝ์šฐ ๊ฐ์ฒด ๋ฐฐ์—ด์— ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  3. ๊ฐ€๋…์„ฑ ๊ฐœ์„ :
    • ์กฐ๊ฑด๋ณ„ ๋กœ์ง์ด ๋ฐฐ์—ด๋กœ ์ •๋ฆฌ๋˜์–ด ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ

์ด ์ฝ”๋“œ๋Š” ์›๋ž˜ ์ฝ”๋“œ์™€ ๋™์ผํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ๊ฐ„๊ฒฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์กฐ๊ฑด๋ณ„๋กœ ์˜ฌ๋ฐ”๋ฅธ ์ด๋ฏธ์ง€๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ถ”๊ฐ€์ ์œผ๋กœ ์ƒˆ๋กœ์šด ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋ฐฐ์—ด์— ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ˜Š