๊ด€๋ฆฌ ๋ฉ”๋‰ด

bom's happy life

[JS] ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•œ <option>ํƒœ๊ทธ์˜ value ๊ฐ€์ ธ์˜ค๊ธฐ ๋ณธ๋ฌธ

Deveolpment Study๐Ÿ—‚๏ธ/Javascript

[JS] ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•œ <option>ํƒœ๊ทธ์˜ value ๊ฐ€์ ธ์˜ค๊ธฐ

bompeach 2023. 6. 7. 14:53

๋™์ ์œผ๋กœ ์ƒ์„ฑํ•œ option ํƒœ๊ทธ์˜ value ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์˜ต์…˜๋ณ€๊ฒฝํ•˜๋ ค๋Š” ์ฝ”๋“œ๋ฅผ ์งœ๋ณด์•˜๋‹ค.

 

๋™์ ์œผ๋กœ ์ƒ์„ฑํ•œ <select><option> ํƒœ๊ทธ : 

--์ค‘๋žต--

rentList += '<td>';
rentList += '<select class="rentOption" name="rentOption" id="rentOption" onchange="optionChange(this)">';
rentList += '<option value="1"' + (rentTime === '1' ? 'selected' : '') + '>1ํƒ€์ž„(10:00~12:00)</option>';
rentList += '<option value="2"' + (rentTime === '2' ? 'selected' : '') + '>2ํƒ€์ž„(13:00~15:00)</option>';
rentList += '<option value="3"' + (rentTime === '3' ? 'selected' : '') + '>3ํƒ€์ž„(15:00~17:00)</option>';
rentList += '</select>';
rentList += '</td>';

--์ค‘๋žต--

์ฐธ๊ณ  ) onchange="optionChange(this)" ์˜ `this` ํ‚ค์›Œ๋“œ๋ž€?

optionChange ํ•จ์ˆ˜๋Š” HTML ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด๋‹น ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” `this` ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. `<select>` ์š”์†Œ์—์„œ onchange="optionChange(this)"์™€ ๊ฐ™์ด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•œ ๊ฒฝ์šฐ, this๋Š” ํ˜„์žฌ ์„ ํƒํ•œ <select> ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ this๋ฅผ ์ด์šฉํ•ด์„œ ์„ ํƒํ•œ ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, optionChange ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ์ž์œ ๋กญ๊ฒŒ ์ง€์„ ์ˆ˜ ์žˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„์€ `this` ๋กœ ์ง€์–ด๋„ ๋˜๊ณ , ๋ช…ํ™•ํ•œ ์˜๋ฏธ๋ฅผ ์ฃผ๊ธฐ ์œ„ํ•ด์„œ `select` ์™€ ๊ฐ™์€ ์˜๋ฏธ์˜ ๋ช…์นญ์„ ์‚ฌ์šฉํ•ด๋„ ์ข‹๋‹ค.

 

 

 

์ฒ˜์Œ์— error๊ฐ€ ๋‚ฌ๋˜ ๋ฌธ์ œ์˜ ์ฝ”๋“œ : 

//์˜ต์…˜๋ณ€๊ฒฝํ•˜๊ธฐ
function optionChange(optionValue) {
	if(optionValue === '1') {
		alert('1ํƒ€์ž„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?');
                 //๊ธฐ๋Šฅ์ถ”๊ฐ€
	} else if (optionValue === '2') {
		alert('2ํƒ€์ž„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?');
		//๊ธฐ๋Šฅ์ถ”๊ฐ€
	} else if(optionValue === '3') {
		alert('3ํƒ€์ž„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?');
		//๊ธฐ๋Šฅ์ถ”๊ฐ€
	} else {
		alert("error");
	}
}

์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ์ด์œ ?

`optionChange` ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ optionValue ๋ฅผ ๋น„๊ตํ•  ๋•Œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ์˜€๋‹ค. optionValue ๋Š” DOM ์š”์†Œ์ธ <select> ์—˜๋ฆฌ๋จผํŠธ ์ž์ฒด์ด๋ฏ€๋กœ, `===` ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ž์—ด๊ณผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ๋ถ€์ ์ ˆํ–ˆ๋˜ ๊ฒƒ!

 

optionvalue ๋Š” <select> ์š”์†Œ์˜ ์„ ํƒ๋œ ์˜ต์…˜์˜ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ์—, optionValue.value ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„ ํƒ๋œ ์˜ต์…˜์˜ ๊ฐ’์„ ๊ฐ€์ ธ์™€ ๋น„๊ตํ•ด์•ผํ•œ๋‹ค. 

 

.

.

 

์ˆ˜์ •ํ•œ ์ฝ”๋“œ : 

//์˜ต์…˜๋ณ€๊ฒฝํ•˜๊ธฐ
function optionChange(selectElement) {
	var optionValue = selectElement.value;
	if(optionValue === '1') {
		alert('1ํƒ€์ž„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?');
		//๊ธฐ๋Šฅ์ถ”๊ฐ€
	} else if (optionValue === '2') {
		alert('2ํƒ€์ž„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?');
		//๊ธฐ๋Šฅ์ถ”๊ฐ€
	} else if(optionValue === '3') {
		alert('3ํƒ€์ž„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?');
		//๊ธฐ๋Šฅ์ถ”๊ฐ€
	} else {
		alert("error");
	}
}

selectElement ๋Š” onchange ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜(`optionChange`) ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ฐ’์ด๋‹ค. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ DOM์š”์†Œ, ์ฆ‰ <select> ์—˜๋ฆฌ๋จผํŠธ ์ž์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

HTML์—์„œ <select> ์š”์†Œ์— onchange="optionChange(this)" ๋ผ๊ณ  ์„ค์ •ํ•˜๋ฉด, `this` ํ‚ค์›Œ๋“œ๋Š” ํ•ด๋‹น <select> ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, optionChange ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด์„œ this ๋ฅผ ์ธ์ˆ˜๋กœ ๋ฐ›๊ฒŒ ๋˜๊ณ , ์ด ๊ฐ’์„ selectElement ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ฆ‰, selectElement ๋Š” <select> ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋กœ์„œ, ํ•ด๋‹น ๊ฐ์ฒด์˜ ์†์„ฑ ์ค‘ value ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ ํƒ๋œ ์˜ต์…˜์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

์ฐธ๊ณ ๋กœ! `optionChange` ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ž์œ ๋กญ๊ฒŒ ์ง€์–ด๋„ ๋œ๋‹ค. `this` ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ <select> ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜๊ณ , ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด optionChange ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„์„ selectElement ๋Œ€์‹ ์— select ๋ผ๊ณ  ์ง€์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด select.value ๊ฐ€ ๋˜๊ฒ ์ง€?