본문 바로가기

공부일지

231006 (HTML)

테스트 23. eval(), parseInt(), isNaN()

  • 자바스크립트의 기본 함수가 있다.
  • eval() : 문자열로 작성된 수식을 연산한다.
  • parseInt : 문자열을 숫자로 변환한다. 10진수 형태로 저장하게 된다.
  • parseInt에 주어진 문자열이 숫자가 아닌 경우 NaN으로 값이 저장된다.(오류코드)
  • isNaN() : NaN 값을 가진 변수 적용시 true를 리턴하게 된다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>함수</title>
<script>
function evalParseIntIsNaN() {
	let res = eval("2*3+4*6");
	document.write("eval(\\"2*3+4*6\\")는 "+res+"<br>")
	let m = parseInt("32");
	document.write("parseInt(\\"32\\")는 "+m+"<br>")
	let n = parseInt("0X32");
	document.write("parseInt(\\"0X32\\")는 "+m+"<br><br>")
	
	n = parseInt("hello");
	if (isNaN(n)) {
		document.write("hello는 숫자가 아닙니다.");
	}
}
</script>
</head>
<body>
	<h3>eval(), parseInt(), isNaN()</h3>
	<hr>
	<script>
		evalParseIntIsNaN()
	</script>
</body>
</html>

 

 

테스트 24. 구구단 출력 함수 만들기

  • 자바와 같은 방식으로 작동하게 된다.
  • return만 따로 적는다면 void 형태로 리턴되고 함수가 종료된다.
  • 자바에서 numberformat오류에 해당하는 경우 NaN 으로 저장되는 점을 이용하여 오류를 체크할 수 있다.(isNaN())
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>함수</title>
<script>
function gugudan(n) {
	let m = parseInt(n);
	if (isNaN(m)||m<1||m>9) {
		alert("잘못 입력하셨습니다.");
		return;
	}
	for (let i=1; i<=9; i++) {
		document.write(m+"x"+i+"="+(m*i)+"<br>");
	}
}
</script>
</head>
<body>
	<h3>구구단 출력 함수 만들기</h3>
	<hr>
	<script>
		let n =prompt("구구단 몇 단을 원하세요","");
		gugudan(n);
	</script>
</body>
</html>

 

 

7장

 

테스트 1. 자바스크립트 객체 생성 및 활용

  • 참조 타입은 new 코드로 객체를 생성하고 변수 타입()으로 변수 내용을 채울 수 있다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>객체 생성 및 활용</title>
</head>
<body>
	<h3>객체 생성 및 활용</h3>
	<hr>
	<script>
		let today = new Date();
		document.write("현재 시간 : " + today.toLocaleString() + "<br>");

		let mystr = new String("자바스크립트 공부하기");
		document.write("mystr의 내용 : " + mystr + "<br>");
		document.write("mystr의 길이 : " + mystr.length + "<br>");
	</script>
</body>
</html>

 

 

테스트 2. []로 배열 만들기

  • 배열은 []로 만들 수 있다. 자바와 다르게 변수에 [] 표시를 해서 만드는 것이 아니고, []에 직접 내용물을 채워 넣는다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>[]로 배열 만들기</title>
</head>
<body>
	<h3>객체 생성 및 활용</h3>
	<hr>
	<script>
		let plots = [20,5,8,15,20];
		document.write("var plots = [20,5,8,15,20]<br>")
		
		for(let i=0;i<5;i++) {
			let size = plots[i];
			while(size>0) {
				document.write("*");
				size--;
			}
			document.write(plots[i] + "<br>")
		}
	</script>
</body>
</html>

 

 

테스트 3. Array 객체로 배열 만들기

  • Array()를 사용하면 길이가 늘어날 수 있는 빈 배열이 생성된다.
  • 배열의 길이를 측정하면 배열에서 값이 있는 양 만큼을 출력한다.
  • 배열을 건너뛰어 값을 넣더라도 하위 배열을 생성은 한다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Array 객체로 배열 만들기</title>
</head>
<body>
	<h3>Array 객체로 배열 만들기</h3>
	<hr>
	<script>
		let degrees = new Array();
		degrees[0] = 15.1;
		degrees[1] = 15.4;
		degrees[2] = 16.1;
		degrees[3] = 17.5;
		degrees[4] = 19.2;
		degrees[5] = 21.4;
		
		let sum = 0;
		for (let i=0; i<degrees.length; i++) 
			sum+=degrees[i];
		
		document.write("평균 온도는 "+sum/degrees.length+"<br>")
	</script>
</body>
</html>

 

 

테스트 4. Array 객체로 배열 만들기

  • concat = 배열을 연결한다. 원래 배열은 유지한다.
  • join = 배열의 값을 ()내부의 값으로 구분하여 저장한다. 원래 배열은 유지한다.
  • reverse = 배열의 순서를 반대로 한다. 원래 배열도 반대로 된다.
  • slice = 배열을 ()내부의 위치에 따라서 분리한다. 원래 배열은 유지한다.
  • sort = 배열을 정렬한다. 원래 배열도 정렬한다.
  • toString = 배열 값을 , 구분으로 정렬하여 문자열로 저장한다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Array 객체의 메소드 활용</title>
<script>
	function pr(msg, arr) {
		document.write(msg + arr.toString() + "<br>")
	}
</script>
</head>
<body>
	<h3>Array 객체의 메소드 활용</h3>
	<hr>
	<script>
		let a = new Array("황", "김", "이");
		let b = new Array("박");
		let c;

		pr("배열 a = ", a);
		pr("배열 b = ", b);
		document.write("<hr>")

		c = a.concat(b);
		pr("c = a.concat(b) 후 c = ", c);
		pr("c = a.concat(b) 후 a = ", a);

		c = a.join("##");
		pr("c = a.join() 후 c = ", c);
		pr("c = a.join() 후 a = ", a);

		c = a.reverse();
		pr("c = a.reverse() 후 c = ", c);
		pr("c = a.reverse() 후 a = ", a);

		c = a.slice(1, 2);
		pr("c = a.slice(1, 2) 후 c = ", c);
		pr("c = a.slice(1, 2) 후 a = ", a);

		c = a.sort();
		pr("c = a.sort() 후 c = ", c);
		pr("c = a.sort() 후 a = ", a);

		c = a.toString();
		document.write("a.toString() : " + c)
	</script>
</body>
</html>

 

 

테스트 5. Array 객체로 배열 만들기

  • Date를 사용하여 현재 시간을 저장할 수 있다. get을 이용하여 각 요소를 불러올 수 있다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Date 객체로 현재 시간 알아내기</title>
</head>
<body>
	<h3>Date 객체로 현재 시간 알아내기</h3>
	<hr>
	<script>
		let now = new Date();
		document.write("현재 시간 : " + now.toUTCString() + "<br><br>");
		document.write(now.getFullYear() + "년도<br>");
		document.write(now.getMonth() + "월<br>");
		document.write(now.getDate() + "일<br>");
		document.write(now.getHours() + "시<br>");
		document.write(now.getMinutes() + "분<br>");
		document.write(now.getSeconds() + "초<br>");
		document.write(now.getMilliseconds() + "밀리초<br><hr>");

		let next = new Date(2023, 7, 15, 12, 12, 12);
		document.write("next.toLocaleString() : " + next.toLocaleString() + "<br>");
	</script>
</body>
</html>

 

 

테스트 6. 방문 시간에 따라 변하는 배경색 만들기

  • document.write처럼 특정 태그의 속성을 변경할 수 있다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>방문 시간에 따라 변하는 배경색</title>
</head>
<body>
	<h3>페이지 방문 초시간이 짝수이면 violet, 홀수이면 lightskyblue 배경</h3>
	<hr>
	<script>
		let current = new Date();
		if(current.getSeconds()%2==0) 
			document.body.style.backgroundColor = "violet";
		else
			document.body.style.backgroundColor = "lightskyblue";
			
		document.write("현재 시간 : ");
		document.write(current.getHours(),"시,");
		document.write(current.getMinutes(),"분,");
		document.write(current.getSeconds(),"초<br>");
	</script>
</body>
</html>

 

 

테스트 7. String 객체의 메소드 활용

  • charAt = ()위치의 문자
  • concat = 내부의 값을 연결
  • indexOf = ()내부의 값의 가장 빠른 위치, 없다면 -1
  • slice와 substr = slice는 두 좌표 사이를 지정, substr은 한 좌표에서 길이 만큼을 자른다.
  • toUpperCase = 대문자로 작성
  • replace = 특정 문자를 찾아서 다른 문자로 교체 후 출력
  • trim = 빈칸을 제거한다.
  • split = ()내부의 값을 기준으로 문자열을 잘라서 문자열 배열로 표현
  • 모든 String메소드는 실행 후 원래 값을 바꾸지 않는다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>String 객체의 메소드 활용</title>
</head>
<body>
	<h3>String 객체의 메소드 활용</h3>
	<hr>
	<script>
		let a = new String("Boys and Girls");
		let b = "!!";
		document.write("a : " + a + "<br>");
		document.write("b : " + b + "<br><hr>");

		document.write(a.charAt(0) + "<br>");
		document.write(a.concat(b, "입니다.") + "<br>");
		document.write(a.indexOf("s") + "<br>");
		document.write(a.indexOf("And") + "<br>");
		document.write(a.slice(5, 8) + "<br>");
		document.write(a.substr(5, 3) + "<br>");
		document.write(a.toUpperCase() + "<br>");
		document.write(a.replace("and", "or") + "<br>");
		document.write("  CD  ".trim() + "<br><hr>");

		let sub = a.split(" ");
		document.write("a를 빈칸으로 분리<br>");
		for (let i = 0; i < sub.length; i++)
			document.write("sub" + i + "=" + sub[i] + "<br>");

		document.write("<hr>String 메소드를 실행 후 a와 b 변함 없음<br>");
		document.write("a : " + a + "<br>");
		document.write("b : " + b + "<br>");
	</script>
</body>
</html>

 

 

테스트 8. Math를 이용한 구구단 연습

  • Math.floor = 내부의 값 중 소수점을 버린 값
  • Math.random = 0.0~1.0(미만)의 랜덤 숫자를 생성한다.*9일시 0~9(미만)의 값 중 하나로 생성된다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Math를 활용한 구구단 연습</title>
<script>
	function randomInt() {
		return Math.floor(Math.random() * 9) + 1;
	}
</script>
</head>
<body>
	<h3>Math를 활용한 구구단 연습</h3>
	<hr>
	<script>
		let ques = randomInt() + "*" + randomInt();

		let user = prompt(ques + "값은 얼마입니까?", 0);
		if (user == null) {
			document.write("구구단 연습을 종료합니다.")
		} else {
			let ans = eval(ques);
			if (ans == user)
				document.write("정답! ")
			else
				document.write("아니오! ")
			document.write(ques + "=" + "<strong>"+ans+"</strong>입니다<br>")
		}
	</script>
</body>
</html>

'공부일지' 카테고리의 다른 글

231010 (HTML)  (0) 2023.10.10
231006 (Java)  (1) 2023.10.06
231005 (Java)  (0) 2023.10.05
231005 (HTML)  (1) 2023.10.05
231004 (Java)  (1) 2023.10.04