재밌고 어려운 IT를 이해해보자~!

JavaScript 본문

코리아IT핀테크과정

JavaScript

언제나즐거운IT 2024. 1. 4. 02:41

프론트를 구성하기위한 스크립트언어 3가지!

CSS도 JavaScript도 HTML 파일 내부에서 작성이 가능하다.


CSS는 <style> 태그 안에서 작성이되고, JavaScript는 <script> 태그 안에서 작성이 가능하다.

연습을 위해 내부에서 작성하지만, 나중엔 외부에서 작성하도록 하자!

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
	<style>
		/* HTML 요소에 스타일을 적용하느 공간 */
	</style>
</head>
<body>

<!-- JavaScript -->
	<script>
		document.write('자바스크립트 시작!');
	</script>
	<script src="js/test01.js"></script> 

</body>
</html>

<script src="js/test01.js"></script>  -> 외부 자바스크립트 파일을 실행시키는 구문

 

<!DOCTYPE html>
<html>

<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
</head>

<body>


	<script>
		console.log('브라우저의 콘솔을 사용하는 JS');

		var num1 = 10;
		var num2 = 20;
		var num3 = num1 + num2;
		console.log('num3 = ' + num3);

		var ans1 = prompt('입력하세요!');
		console.log('ans1 = ' + ans1);
		var ans2 = confirm('YES or NO ?');
		console.log('ans2 = ' + ans2);
		alert('알림참');

		var res;
		console.log('res = ' + res);

		var a = 9;
		var b = '9';
		console.log('a == b');
		console.log(a == b);
		console.log('a === b');
		console.log(a === b);


		while (true) {
			var age = prompt('1~120살까지 입력해라~');
			if (1 <= age && age <= 8) {
				document.write('0원');
				break;
			} else if (9 <= age && age <= 19) {
				document.write('1200원');
				break;
			} else if (20 <= age && age <= 65) {
				document.write('2000원');
				break;
			} else if (66 <= age && age <= 120) {
				document.write('0원');
				break;
			}
		}

	</script>

</body>

</html>

var 타입이란?

variable을 뜻하는 것으로, 어떤 타입의 데이터도 받아올 수 있다.  문자, 숫자 함수 등등!

 

Js의 변수 선언 방식 3가지!

1. Var : 중복 선언 가능

2. let : 중복 선언 불가능, 재할당 가능

3. const : 중복 선언 불가능, 재할당 불가능

 

자바스크립트의 비교연산자는 '==', '===' 두가지가 있는데,

'=='는 변수 값을 기반으로 유형을 수정해 문자와 숫자비교도 True 가 나오는 반면

'==='는 타입까지 비교하기 때문에, 문자와 숫자를 비교하면 False가 나온다.

웹 에서는 대부분을 문자열로 받는 것이 유리하기 때문에 알아서 유형을 수정해주는 '=='연산자가 존재하는 것 같다.

 

Js연산자 사용 연습

<!DOCTYPE html>
<html>

<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
</head>

<body>


	<script>
		console.log('브라우저의 콘솔을 사용하는 JS');

		var num1 = 10;
		var num2 = 20;
		var num3 = num1 + num2;
		console.log('num3 = ' + num3);

		var ans1 = prompt('입력하세요!');
		console.log('ans1 = ' + ans1);
		var ans2 = confirm('YES or NO ?');
		console.log('ans2 = ' + ans2);
		alert('알림참');

		var res;
		console.log('res = ' + res);

		var a = 9;
		var b = '9';
		console.log('a == b');
		console.log(a == b);
		console.log('a === b');
		console.log(a === b);


		while (true) {
			var age = prompt('1~120살까지 입력해라~');
			if (1 <= age && age <= 8) {
				document.write('0원');
				break;
			} else if (9 <= age && age <= 19) {
				document.write('1200원');
				break;
			} else if (20 <= age && age <= 65) {
				document.write('2000원');
				break;
			} else if (66 <= age && age <= 120) {
				document.write('0원');
				break;
			}
		}

	</script>

</body>

</html>

익명함수(Anonymous function)

자바스크립트 익명 함수는 함수명 대신 변수명에 함수 코드를 저장하는 구현 방식이다. 익명 함수의 소스 코드는 변수값이므로 끝에 세미콜론 ; 을 대입한다. 익명 함수는 호출 시 변수명을 함수명처럼 사용하면 된다.

  var 변수명 = function( 매개변수 )
  {
    실행문;
  };

 

익명함수는 마치 변수를 대입하듯이 함수명 (또는 변수명) 을 바꿀 수 있다.

//익명 함수 선언
var apple = function( ) {
  document.write("This is a banana.");
};

//변수명 교체
var banana = apple;

//변경된 변수명으로 함수 호출
banana( );
// result : This is a banana.

단점

일반 함수는 위치가 어디든 함수 호출이 가능하지만, 익명함수는 다르다.

호이스팅(함수 선언 보다 함수 호출이 윗 줄에 위치해도 실행되는 기능)이 적용되지 않는다.

 

다양한 내장함수를 알아두면 매우좋다!

 

익명한수 사용 연습 및 UP DOWN게임 만들기

<!DOCTYPE html>
<html>

<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
</head>

<body>



	<!--익명함수-->
	<script>
		var func = function () {
			var a = 1;
			var b = 2;
			console.log(a + b);
		};
		func();
	</script>


	<!-- 내장 함수 -->
	<script>
		var str = 'banana';
		console.log(str.charAt(0));
		console.log(str.indexOf('a'));
		console.log(str.lastIndexOf('a'));
		console.log(str.substring(1, 3));
		console.log(str.replace('a', 'A'));
		console.log(str.toUpperCase());
	</script>
	<!-- 내장 객체 -->
	<!--24~30: 내장 객체 String의 메서드를 사용중-->
	<!--Math : 주로 랜덤값을 생성할때에 활용됨-->
	<!--Date : 날짜와 관련된 작업을 수행할때에 활용됨-->

	<script>

		var num1 = prompt('최소값 입력');
		var num2 = prompt('최대값 입력');
		
		var max = Number(num2);
		var min = Number(num1);
		const rand1 = Math.floor(Math.random() * (max - min + 1)) + min;
		
		alert(min);
		alert(max);
		alert(rand1);
		var cnt =  0;
		while (true) {
			var ans = prompt('숫자 맞춰보셈~');
			if (isNaN(ans)) {
				alert('정수만 입력해주세요');
				continue;
			}
			if (ans < min || ans > max) {
				alert('범위' + min + '~' + max + '다시입력하세요 ㅡㅡ');
				continue;
			}
			
			if (rand1 > ans) {
				alert("UP");
			} else if (rand1 < ans) {
				alert("DOWN");
			} else {
				cnt++;
				break;
			}
			cnt++;
		}

		alert("정답~");
		document.write('정답은바로~ :' + rand1 + '\n');
		document.write(cnt + '번만에 맞추셨네요~!');
	</script>

</body>

</html>

HTML, CSS, JavaScript 를 사용한 페이지 구성 및 버튼 클릭 기능 구현

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>이벤트 등록</title>
<style>
	#box {
		background-color: lightcoral;
		cursor: pointer;
		width: 150px;
		
	}
</style>
</head>
<body>
	<!--window.onload -> 화면이 다 실행된 다음에 function()이 실행되기 때문에
	box 클릭을 가져올 수 있다.-->
<!--	getelement로 선택할수 없는 요소는 qerySelector 로 선택할수있다
--> <!--스크립트는 하이픈표기 절때안한다 헷갈린다-->
<script>
	window.onload = function(){
		var box=document.getElementById('box');
		box.onclick = function() {
			window.open('https://www.naver.com/');
		};
		
		var list=document.querySelectorAll('#box1 > ul > li');
		list[0].style.backgroundColor='lightblue';
		list[1].style.backgroundColor='lightblue';
	};
</script>

<div id="box">클릭</div>

<hr>

<div id="box1">
	<ul>
		<li>베스트상품</li>
		<li>신상품</li>
	</ul>
</div>

<div id="box2">
	<ul>
		<li>후드티</li>
		<li>반팔티</li>
		<li>운동화</li>
	</ul>
</div>

</body>
</html>

window.onload()

<script>
  var a = document.getElementById( 'test' );
  a.style.color = "blue"
</script>
<p id = "test">hello</p>

위와 같이 사용을 하면, 원칙상으로 자바스크립트의 document.getElementById( 'id' );가 html 내부 id가 test 이란 태그가 생성되기도 전에 실행되므로 문제가 발생한다.

<script>
  window.onload = function(){
  var a = document.getElementById( 'test' );
  a.style.color = "blue"
  }
</script>
<p id = "test">hello</p>

위와 같이 window.onload라는 메서드를 오버라이딩(재정의) 해주면 되는데, 해당 함수 내의 코드 스크립트는 웹브라우저 내의 모든 요소가 준비가 되어야 실행이 되도록 할수 있다. (웹브라우저 자체를 담당하는 window라는 객체가, 웹 문서를 불러올때, 문서가 사용되는 시점에 실행되는 onload라는 함수를 내가 다시 재정의 한다는 개념이다.)

 

화면이 다 실행된 다음에 function()이 실행되기 때문에 box 클릭을 가져올 수 있다.

 

document.getElementById();

태그에 있는 id 속성을 사용하여 해당 태그에 접근하여 하고 싶은 작업을 할 때 쓰는 함수이다.

var container = document.querySelector("#test");
var matches = container.querySelectorAll("div.highlighted > p");

여기에서는, ID 가 "test" 인 컨테이너안에 위치하고 부모 엘리먼트가 div 엘리먼트이며 클래스가 "highlighted" 인 <p> 엘리먼트의 리스트를 얻는다.

 

getelement로 선택할수 없는 요소는 qerySelector 로 선택할 수 있다.

또한 스크립트는 하이픈표기 절때안한다 헷갈린다!

<!DOCTYPE html>
<html>

<head>
	<meta charset="UTF-8">
	<title>이벤트 등록 02</title>
	
	<style>
		div {
			width: 10px;
			background-color:red;
			position: fixed;
			left: 200px;
			top: 10px;
			height: 10px;
		}
	</style>
</head>
<body>
	<script>
		//addElem함수인데
		//아이디가 btn인애 받아서
		//on click에 연결할거야
		//연결한다는건 요소를 함수에 추가한다는것
		function addElem() {
			var btn = document.getElementById('btn');
		
			function func() {
				var div=document.createElement('div');
				//하나의 엘리먼트 단위를 노드라고 표현한다~
		 		//링크를 주려면 a태그가 필요하고
				//a태그는 안에 텍스트를 가지니까 노드를 만들었다
				//문자와 하이퍼레퍼런스를 둘다가져야한다~
				var a=document.createElement('a');
				var txt=document.createTextNode('링크');
				a.appendChild(txt);
				a.setAttribute('href','https://www.naver.com/');
					
				div.appendChild(a);				
				
				document.body.appendChild(div);
			}
			//스크립트는 함수도 자료형~ 
			btn.onclick = func;  //괄호안붙여도됌 ㄷㄷ
			console.log('확인');
		}
		//화면이 로드되면 그 함수 연결해이자시가
		addEventListener('load',addElem);
	</script>
	<button id="btn">버튼을 누르면 요소가 생성됩니다.</button>
</body>

</html>

 

자바스크립트를 이용하여 문서에 HTML 요소를 추가할 수 있는데 이 때 필요한 자바스크립트 속성은 다음과 같다.

  • .createElement()
  • .createTextNode()
  • .appendChild()

createElement()는 요소를 만든다. 예를 들어 .createElement( 'h1' )는 은 다음과 같은 코드를 생성한다.
<h1> </h1>

 

.createTextNode()는 선택한 요소에 텍스트를 추가한다.
.createTextNode( 'My Text' )는 My Text라는 문자열을 만든다.


.appendChild()는 선택한 요소 안에 자식 요소를 추가한다.

 

유효성검사가 포함된 로그인 창 작성

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<script>
		window.onload =function(){
			document.joinForm.onsubmit = function(){
				if(!joinForm.mid.value){
					alert('아이디를 입력해주세요!');
					joinForm.mid.focus();
					return false;
				}
				if(!joinForm.mpw.value){
					alert('비밀번호를 입력해주세요!');
					joinForm.mpw.focus();
					return false;
				}
			};
		};
	</script>
	부를이름이 없어서 이름 붙이기 name 
	<form name="joinForm" action="다음페이지" method="POST">
	아이디 : <input type="text" name="mid"> <br>
	비밀번호 : <input type="password" name="mpw"> <br>
	<input type="submit" value="회원가입">
	</form>
</body>
</html>

 

 

 

 

 

 

 

*참조 https://velog.io/@leyuri/javaScript-window.onload%EB%9E%80

'코리아IT핀테크과정' 카테고리의 다른 글

JSP2  (0) 2024.01.05
JSP  (2) 2024.01.04
WebApp, HTML 1  (0) 2023.12.27
Web Crawling  (0) 2023.12.22
웹서버 프로그래밍 시험 오답노트  (0) 2023.12.21
Comments