[SIST] Web_javascript_days01_클래스 속성 추가, 스타일 / 속성 추가 및 변경, 문자 추가 및 변경, 라디오버튼 / 체크박스 체크 값 가져오기

2022. 5. 28. 23:43·TIL/Web(HTML, CSS, JS, jQuery)
728x90
반응형

1. javascript(자바스크립트)?

1) 객체 기반의 스크립트 프로그래밍 언어

2) 목적 : 웹 페이지에서 사용자의 반응 처리
 사용자의 특정 이벤트나 입력값을 받아서 동적으로 처리를 할 목적으로 고안된 언어
 
3) html - 웹 페이지 구조(내용) 정의
    css - 웹 페이지의 레이아웃(스타일) 정의
    javascript - 웹페이지의 동작 처리 정의
        ㄱ. html 내용 변경
        ㄴ. html 속성 변경
        ㄷ. html 스타일(css) 변경
        ㄹ. html 요소를 숨기기/보이기 
        등등 할 수 있다.
   
4) 사용자의 경험(UX)/사용자의 인터페이스(UI)를 향상 시키기 위한 방법으로 js를 주로 사용한다.

5) javascript는 주로 웹 브라우저(클라이언트)에서 주로 사용되는 언어였으나,
지금은 서버 측 프로그램을 개발할 때도 사용된다(확대) - ex) node.js

6) javascript는 다운로드 / 설치 X -> 브라우저에 내장(javascript 엔진)
 브라우저 종류/버전 javascript X

7) 자바 스크립트 표준 : ECMAScript(에크마 스크립트)라는 협회에서 표준화 시킴
표준 공식 이름 : ECMA-262

8) js는 <script></script> 라는 태그 안에 코딩한다.
<script type="text/javascript" language=""></script> 과거에는 이렇게 썻는데 위에 태그로 표준화되어서 안써도 된다.

9) html 문서 안에서 script 태그는 원하는 위치에 원하는 수만큼 사용(배치)할 수 있다.

- 중간 중간에 script 태그가 있으면 디스플레이 속도가 늦어짐.

- html 태그 바깥에 넣어도 보여지기는 하지만 이렇게 사용하지 않음

- head 닫기 태그 바로 위나 body 닫기 태그 바로 위에 넣는다. -> 디스플레이 속도를 늦추지 않기 위해 body의 닫기 태그 위에 코딩한다!

10) 동일한 코드가 여러 페이지에서 반복적으로 사용된다면 외부 자바스크립트 파일(???.js)을 만들어서 사용할 수 있다. 

 

11) 외부 자바스크립트 파일은 아래와 같이 script 태그 안에 src로 파일명을 가져와야한다.

<script src="myScript2.js"></script>

 

* 만약 외부 자바스크립트 파일 경로가 다르거나 파일이 존재하지 않으면 적용이 안되기 때문에 F12를 눌러 개발자도구 - 네트워크에서 잘 가져오는지를 확인해보자

> 상태가 404사 인것은 서버에서 가져오지 못한다는 뜻!


12) 외부 자바스크립트 파일 사용(장점)
   - html 코딩과 js 코딩 분리 관리 : 유지, 보수, 확장 용이
   - 캐싱된 js파일 : 페이지의 로드 속도 향상

 

13) 변수를 선언할 때 var와 let로 선언할 수 있다.

ex) var test1

       let test2


2. javascript의 innerText 속성

- 원래 있던 문자열을 가지고 오거나 내용을 추가해서 화면에 보여주는 속성

 

- innerText 속성은 태그 안에 있는 문자를 가져오기도 하고 = 을 써서 대입할 수도 있음

 

코드예시)

<body>
	<h3>ex01_02.html</h3>
</body>

<script>
	var h3elemt = document.querySelector("h3"); // h3 요소를 가져와서 h3elemt 변수에 담겠다.
	h3elemt.innerText += " - html 내용을 js로 변경"; // 원래 있던 문자열에 내용을 추가해서 화면에 보이겠다.
</script>

 

결과)


3. javascript에서 class 속성을 추가하는 방법 3가지

1) classList와  add()

- 클래스를 읽어와서 add()를 사용해 요소에 클래스 속성을 추가할 수 있다.

 

2) className

- 클래스를 읽어와서 클래스 속성을 추가할 수 있다.

 

3) setAttribute()

- setAttribute(속성명, 속성값)

- 선택한 요소의 속성 값을 설정한다.

 

코드예시)

<style>
	.inputcls{
		padding: 5px;
		border: 1px solid gray;
		width: 400px;
		background-color: blue;
		
	}
</style>

<body>
    <input type="text" id="txtMsg" name="txtMsg" autofocus="autofocus" value="안녕">
    
<script>
	// js로 input 요소에 class 속성(.inputcls)을 추가
	// [1번째 방법] classList.add()
	// document.querySelector("#txtMsg")
	// document.getElementById("txtMsg")
	// document.querySelector("input").classList.add("inputcls");
	document.getElementById("txtMsg").classList.add("inputcls");
		
	// [2번째 방법] className
	document.getElementById("txtMsg").className = "inputcls";
	
	// [3번째 방법] setAttribute
	document.getElementById("txtMsg").setAttribute("class", "inputcls");
 </script>
 </body>

 

결과)


예제1) 버튼 클릭을 하면 p태그에 문자를 추가하기

코드)

<body>

    p태그의 innerText 입력 : 
    <input type="text" id="txtMsg" name="txtMsg" autofocus="autofocus" value="안녕">
    <br>
    <button onclick="btn_click();">Click Me!</button>

    <p id="demo"></p>

<script>
	function btn_click() {
 		var message = document.getElementById("txtMsg").value;
		var pelemt = document.getElementById("demo");
		pelemt.innerText = message; 
	}
</script>
</body>

 

결과)


예제2-1) 버튼을 클릭하여 이미지 변경 및 버튼 비활성화하기 - 전구 불키기

코드예시)

<body>

    <button onclick="bulb_on();">Turn on</button>
    <button disabled="disabled" onclick="bulb_off();">Turn off</button>

    <img src="../images/pic_bulboff.gif" alt="" id="imgbulb">

<script>
	function bulb_on() {
		let bulb = document.getElementById("imgbulb");
		// 속성 변경 방법 1번째 - 요소.속성명 = "속성값";
        bulb.src = "../images/pic_bulbon.gif";
    
    	// 속성 변경 방법 2번째 - setAttribute("속성명", "속성값")
		// bulb.setAttribute("src", "../images/pic_bulbon.gif");
		
        // disabled 속성은 활성화 및 비활성화 시키는 속성
		document.querySelector("button:first-of-type").disabled=true; // Turn on 버튼 비활성화
		document.querySelector("button:last-of-type").disabled=false; // Turn off 버튼 활성화
	}
	
	function bulb_off() {
		let bulb = document.getElementById("imgbulb");
		bulb.src = "../images/pic_bulboff.gif";
		document.querySelector("button:first-of-type").disabled=false; // Turn on 버튼 활성화
		document.querySelector("button:last-of-type").disabled=true; // Turn off 버튼 비활성화
	}
</script>

</body>

 

결과)


예제2-2) 하나의 버튼을 클릭하여 이미지 변경 - 전구 불키기

코드예시)

<body>

<input disabled="disabled">

<button onclick="bulb_on_off(this);">Turn on</button> <!-- this를 넣으면 자기 자신을 넣음 -->

<img src="../images/pic_bulboff.gif" alt="" id="imgbulb">

<script>
	function bulb_on_off(btn) { // btn == this
		let bulb = document.getElementById("imgbulb");
		if (btn.innerText == "Turn on") { // 같냐라고 물어보는 연산자는 ==
			bulb.src = "../images/pic_bulbon.gif";
			btn.innerText = "Turn off";
		} else {
			bulb.src = "../images/pic_bulboff.gif";		
			btn.innerText = "Turn on";
		}
	}
</script>

<script>
	var sw = false; // 스위치 변수 선언
	function bulb_on_off(btn) { 
		let bulb = document.getElementById("imgbulb");
		
        // if문 사용
		if (!sw) {
			bulb.src = "../images/pic_bulbon.gif";
			btn.innerText = "Turn off";
		} else {
			bulb.src = "../images/pic_bulboff.gif";		
			btn.innerText = "Turn on";
		}
		
		sw = !sw;
	}
</script>

<script>
	// sw 변수를 선언한 코딩이 제일 좋은 코딩
    
	var sw = false; // 스위치 변수 선언
	function bulb_on_off(btn) { 
		let bulb = document.getElementById("imgbulb");
		
		// 삼항 연산자 사용
        // sw가 true 전구의 불을 끄고, false라면 키겠다.
		bulb.src = "../images/pic_bulb" + (sw ? "off" : "on") + ".gif";
        // sw가 true라면 Turn on으로 버튼의 이름을 바꾸고, 아니라면 Turn off로 바꾸겠다.
		btn.innerText = sw ? "Turn on" : "Turn off"; 

		sw = !sw; // 버튼을 한 번 클릭한 다음 sw 변수의 값을 바꾸겠다.
	}
</script>
</body>

 

결과)


4. javascript에서 style(스타일) 변경하기

- alt, src 처럼 존재 자체가 속성인 것은 선택자.속성명 = "속성값"으로 설정하면 된다.

 

- style은 선택자.style.스타일속성명 = "속성값"으로 설정해야한다.

 

코드예시1) style 태그 안에 스타일 설정 후 변경

<style>
	.demostyle{
		color: red;
		font-size: 35px;
		border: 1px solid gray;
	}
</style>

<body>
<button>스타일 변경</button>

<p id="demo">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Repellendus laborum illo quasi eveniet et recusandae?</p>

<script>
	document.querySelector("button").onclick = function () {
		var demo = document.getElementById("demo");
		
		// style 태그를 추가해서 스타일 클래스를 하나 선언 후 아래와 같이 코딩을 해도 된다.
		demo.className = "demostyle";

	}
</script>
</body>

 

코드예시2) script 태그 안에서 style을 지정

<body>

<button>스타일 변경</button>

<p id="demo">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Repellendus laborum illo quasi eveniet et recusandae?</p>

<script>
	document.querySelector("button").onclick = function () {
		var demo = document.getElementById("demo");
        
		// style을 하나씩 지정하는 방법
		demo.style.color = "red";
		// document.querySelector("body p#demo").style.color = "red";
		// document.querySelector("pre+p#demo").style.color = "red";
		demo.style.fontSize = "35px";
		demo.style.border = "1px solid gray";
		
		// style을 여러 개 지정하는 방법
		demo.style = "color:red; font-size:35px; border: 1px solid gray;";

	}
</script>
</body>

 

결과)


5. javascript에서 데이터를 출력하는 기능들

> window 객체는 생략이 가능하다

1. window.document.write();


2. window.alert() - 경고창으로 데이터 출력

 

코드)

<script>

    alert("테스트");

</script>

 

결과)


3. console.log() - 브라우저 콘솔 창에 데이터 출력(디버깅 목적)


4. innerText - html 요소한테 출력하는 일(태그 안에 문자를 넣음) -> 문자 그대로 출력 == 제이쿼리의 text()

 

5. innerHTML - html 요소한테 출력하는 일(태그 안에 문자를 넣음) -> html에 적용을 시켜서 출력 == 제이쿼리의 html()

 

코드예시)

<body>
<p id="demo1">P</p>
<p id="demo2">P</p>

<script>
	var html = "<table border='1' width='300px'>";
	html += "<tr>";
	html += "<th>deptno</th><th>dname</th><th>loc</th>";
	html += "</tr>";
	html += "<tr>";
	html += "<td>10</td><td>dname</td><td>loc</td>"
	html += "</tr>";
	html += "<tr>";
	html += "<td>20</td><td>dname</td><td>loc</td>"
	html += "</tr>";
	html += "<tr>";
	html += "<td>30</td><td>dname</td><td>loc</td>"
	html += "</tr>";
	html += "<tr>";
	html += "<td>40</td><td>dname</td><td>loc</td>"
	html += "</tr>";
	html += "</table>";
	
	
	document.getElementById("demo1").innerText = html;
	
	document.getElementById("demo2").innerHTML = html;
		
	console.log(html);

	document.write(html);

</script>
</body>

 

결과)


6. javascript에서 다음 형제 요소, 이전 형제 요소 가져오기

- nextElementSibling : 다음 형제 요소 가져오기

 

- previousElementSibling : 이전 형제 요소 가져오기


7. querySelector 와 querySelectorAll

querySelector()

  - 선택자에 해당하는 한 개의 요소 반환

 

querySelectorAll()

  - 선택자와 일치하는 모든 요소를 반환

  - 반환 타입은 리스트 타입이며, 인덱스를 통해 조작할 수 있다.(시작은 0부터)


8. input 태그 중 type이 라디오 버튼인 것의 check된 값을 가져오기

- input태그요소.checked를 하면 check된 값을 가져온다.

 

- 선택자.value를 하게되면 선택자가 가지고 있는 value 값을 가지고 온다.

 

코드)

<body>
<fieldset>
	<legend>성별</legend>
	<input type="radio" name="gender" id="g_male" value="male" checked="checked"><label for="g_male">남자</label>
	<input type="radio" name="gender" id="g_female" value="female"><label for="g_female">여자</label>
</fieldset>

<br>

<button onclick="test();">성별 확인</button>

<p id="demo">성별 출력 : </p>

<script>
function test(){
	
	var gender = document.querySelectorAll("[name='gender']"); // gender 이름을 가진 라디오 버튼들만 가지고 오겠다.
	for (var i = 0; i < gender.length; i++) {
		if(gender[i].checked){
        	// value를 가지고 오면 male과 female로 보여진다.
			// document.getElementById("demo").innerText = gender[i].value;																					
			document.getElementById("demo").innerText = gender[i].nextElementSibling.innerText;
			break;

		}
	}
}

</script>
</body>

 

결과)


9. select 태그의 option 태그에서 선택한 값을 가져오기

- javascript에서 option 값이 바뀌는 행위는 onchange라고 한다. (클릭은 onclick)

 

- options 컬렉션은 옵션을 가지고 오는 것

 

- selectedIndex는 선택된 인덱스를 가지고 오는 것

 

- document.getElementById("subject").options[document.getElementById("subject").selectedIndex]

= subject 라는 ID를 가진 요소를 가져와서 select 태그의 option 태그에서 선택된 옵션의 index를 가져오겠다.

 

코드예시)

<body>
    좋아하는 과목 선택?
    <select name="subject" id="subject" onchange="subject_change();">
        <option>선택하세요</option>
        <option value="kor">국어</option>
        <option value="eng">영어</option>
        <option value="mat">수학</option>
        <option value="pe">체육</option>
    </select>

    <p id="demo">선택된 과목 : </p>

<script>
	var demo = document.getElementById("demo").innerText;

	function subject_change() {
		var sub = document.getElementById("subject");	
		var value = sub.options[sub.selectedIndex].value;
		var txt = sub.options[sub.selectedIndex].innerText;
		document.getElementById("demo").innerText = demo + value + " / " + txt;
	}
</script>
</body>

 

결과)


10. input 태그의 type이 checkbox인 것들 중 check가 된 값 가져오기

- input 태그의 name으로 요소를 가져와서 해당 하는 요소만큼 for문을 돌려 요소의 i번째의 값이 check가 되었는지 checked로 확인을 한다.

 

- 과목을 선택한 후에는 과목선택 버튼은 비활성화 시킨다.

 

코드예시)

<body>

좋아하는 과목 선택?

<input type="checkbox" value="kor" name="subject" id="s_kor"><label for="s_kor">국어</label>
<input type="checkbox" value="eng" name="subject" id="s_eng" checked="checked"><label for="s_eng">영어</label>
<input type="checkbox" value="mat" name="subject" id="s_mat"><label for="s_mat">수학</label>
<input type="checkbox" value="pe" name="subject" id="s_pe"><label for="s_pe">체육</label>

<br>

<button onclick="subcheck();">과목 확인</button>

<p id="demo">선택된 과목 : </p>

<script>
	
	var pdemo = document.getElementById("demo").innerText;
	var favsub = "";
	function subcheck() {
		var ch = document.getElementsByName("subject");
		for (var i = 0; i < ch.length; i++) {
 			if (ch[i].checked == true) {
 				favsub += ch[i].nextElementSibling.innerText + " ";
			} // if
		} // for
		document.getElementById("demo").innerText = pdemo + favsub;
		
		document.querySelector("button:first-of-type").disabled=true;
	}
	
</script>
</body>
</html>

 

 

결과)

728x90
반응형

'TIL > Web(HTML, CSS, JS, jQuery)' 카테고리의 다른 글

[SIST] Web_javascript_days02  (0) 2022.05.30
[SIST] Web_jquery_days01(맛보기)  (0) 2022.05.29
[SIST] javascript / jquery 맛보기(내용 배울 때마다 추가 중..)  (0) 2022.05.26
[SIST] Web_CSS_days06_CSS 애니메이션 효과  (0) 2022.05.26
[SIST] Web_CSS_days06_CSS 전환 작업(transition 속성)  (0) 2022.05.26
'TIL/Web(HTML, CSS, JS, jQuery)' 카테고리의 다른 글
  • [SIST] Web_javascript_days02
  • [SIST] Web_jquery_days01(맛보기)
  • [SIST] javascript / jquery 맛보기(내용 배울 때마다 추가 중..)
  • [SIST] Web_CSS_days06_CSS 애니메이션 효과
야리니
야리니
오늘보다 내일 더 성장하는 개발자가 되기 위한 야리니 블로그입니다 :)
    반응형
    250x250
  • 야리니
    야리니의 step by step
    야리니
  • 링크

    • GitHub
    • Linkedin
  • 전체
    오늘
    어제
    • 분류 전체보기 (478)
      • TIL (379)
        • Java (97)
        • Kotlin (28)
        • JPA (16)
        • Spring (37)
        • Oracle (22)
        • JDBC (7)
        • Web(HTML, CSS, JS, jQuery) (90)
        • View Template (31)
        • AWS (7)
        • HTTP (7)
        • CS (5)
        • Linux, Unix (2)
        • Python (20)
      • Trouble Shooting(Error) (37)
      • Algorithm (15)
      • Git,GitHub (8)
      • Diary (24)
      • 독서 (9)
      • Etc (6)
        • Mac (1)
        • 학원준비과정 (2)
  • 블로그 메뉴

    • 방명록
    • 태그
  • 공지사항

    • 안녕하세요 :)
  • 인기 글

  • 태그

    oracle
    CSS
    쌍용교육센터
    java
    java기초
    Kotlin
    코틀린
    백엔드 개발자
    국비지원학원
    HTML
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
야리니
[SIST] Web_javascript_days01_클래스 속성 추가, 스타일 / 속성 추가 및 변경, 문자 추가 및 변경, 라디오버튼 / 체크박스 체크 값 가져오기
상단으로

티스토리툴바