본문 바로가기
Frontend

07월 11일 목 | UI 화면구현 07 - Javascript 기초문법Ⅳ

by 구라미 2019. 7. 11.

Javascript 기초문법Ⅳ

8. 회원가입 유효성검사 이어서..

어제 작성했던 회원가입 html,script를 가져와서 가입에 새로운 메소드를 연결한다.

function validate2(){
		//자바스크립트메소드를 이용해서 폼컨트롤 요소가 갖고 있는 기능을 접근할 수 있다.
}

 

 

function validate2(){
	//자바스크립트메소드를 이용해서 폼컨트롤 요소가 갖고 있는 기능을 접근할 수 있다.
	var frm = document.memfrm; //현재 문서에 name이 memfrm이라고 된 것을 찾아라.
	alert(memfrm);
	alert(document.memfrm.uid.value);  //작성한 아이디가 alert로 뜸 
	alert(document.getElementById("uid").value); //위와 같다.
	alert(frm.uid.value); //위와 같다.

	document.memfrm.action="ok2.jsp";
	frm.action="ok2.jsp";

	//<input type=submit>과 동일한 기능의 자바스크립트 메소드*/
	//폼컨트롤요소가 가지고 있던 최초의 상태 복귀
	document.memfrm.submit();
	frm.submit();
}

자주 사용되는 중요한 예제이다.

submit() 메소드.

name속성으로 찾은 것을 부르기

id값으로 부르기

 

 

연습문제

연습문제 1) 1~45 중에서 서로 겹치지 않게 6개 발생시킨 후 오름차순으로 정렬해서 각 텍스트 상자에 출력.

 

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">   
  <title>로또번호</title>
  <style>
  	body {font-size: 16px; letter-spacing: -0.8px;}
  	#demo {margin:auto; padding:40px;}
  	input {height:25px; border: 1px solid #ccc; border-radius: 5px;}
  	hr {border: 1px dotted #ddd;}
  </style>

</head>
<body>  
  <div id="demo">
  	<h1>로또번호</h1>
  	<form name="lottofrm" id="lottofrm">
  		<input type="text" name="n" id="n0" size="3" readonly>
  		<input type="text" name="n" id="n1" size="3" readonly>
  		<input type="text" name="n" id="n2" size="3" readonly>
  		<input type="text" name="n" id="n3" size="3" readonly>
  		<input type="text" name="n" id="n4" size="3" readonly>
  		<input type="text" name="n" id="n5" size="3" readonly>
		<hr>
		<input type="button" name="" value="추첨" onclick="lotto()">

	</form>
  </div>
	

<script>
	function lotto(){
		//연습문제 1) 1~45 중에서 서로 겹치지 않게 6개 발생시킨 후 오름차순으로 정렬해서 각 텍스트 상자에 출력.
		var lotto=[];
		var size=6;

		for(var i=0; i<size; i++){
		lotto[i]=parseInt((Math.random()*45)+1);
		for(var j=0; j<i; j++){
			if(lotto[i]==lotto[j]){
				i--;
				break;
				}//if end
			}//for end
		}//for end

		function sorting(a,b){return a-b;} //숫자정렬
		lotto.sort(sorting); //자바스크립트 정렬메소드
		//alert(lotto);

		for(var i=0; i<size; i++){			
			document.getElementById("n"+i).value=lotto[i];
			//자바스크립트는 자료형에 유연하기 때문에 "n"+i 이렇게 조합해도 된다. 
		}
	}
</script>

</body>
</html>

결과값:

난수번호를 생성하는 random()메소드를 사용한 코드이다.

수의 정렬은 sort하는 방법이 문자열과 다르므로 유의하기.

9. this 예약어

자바에서도 있는 개념인 this의 사용법에 대한 예제.

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">   
  <title>This에 대해</title>
  <style>
  	body {
    font-size: 16px; 
    letter-spacing: -0.8px;
    }
  	#demo {
    margin:auto; 
    padding:40px;
    }
  	input {
    width: 100px; 
    height:25px; 
    border: 1px 
    solid #ccc; 
    border-radius: 5px;
    }
  	#btn1 {
    width:60px; 
    height: 32px; 
    border: 1px solid #48b4e0; 
    background-image: linear-gradient(45deg, skyblue, #48b4e0); 
    color:#fff;
    }
  	#btn2 {
    width:60px; 
    height: 32px; 
    border: 1px solid #00a600; 
    background-image: linear-gradient(45deg, #00a600, #00b480); 
    color:#fff;
    }
  	#btn3 {
    width:60px; 
    height: 32px; 
    border: 1px solid #663399; 
    background-image: linear-gradient(45deg, #663399, #48b4e0); 
    color:#fff;
    }
  	#btn4 {
    width:60px; 
    height: 32px; 
    border: 1px solid #663399; 
    background-image: linear-gradient(45deg, #663399, #b400e0); 
    color:#fff;
    }
  	hr {
    border: 1px dotted #ddd; 
    }
  </style>

</head>
<body> 	
  <div id="demo">
  <h1>This 연습</h1>
  <form name="myform" id="myform" onsubmit="test5(this)"> 
  <!-- this: 자기자신의 요소
  this는 폼컨트롤요소에서만 사용가능
  <a href="" onclick="test5(this)"> </a> 에러 
  <form>요소에서 this.form은 undefined 주의!!!
  -->

  <!-- 		자기 자신		 -->		
  <input type="button" name="btn1" id="btn1" value="버튼1" onclick="test1()">
  <!-- this: 자기 자신의 요소를 가리킴  -->
  <input type="button" name="btn2" id="btn2" value="버튼2" onclick="test2(this)">
  <!-- this.value 자신의 요소가 가지고 있는 값  -->
  <input type="button" name="btn3" id="btn3" value="버튼3" onclick="test3(this.value)">
  <!-- this.form 자신의 요소가 속해 있는 폼  -->
  <input type="button" name="btn4" id="btn4" value="버튼4" onclick="test4(this.form)">
</form>
 </div>

<script>
  function test1(){
  //1) name 접근
  alert(document.myform);
  alert(document.myform.btn1);

  //변수를 만들어 주었다. 위와 같음
  var myform = document.myform;
  var testBtn = document.myform.btn1;
  alert(myform);
  alert(testBtn);
  
  //2) id 접근
  alert(document.getElementById("myform"));
  alert(document.getElementById("btn1"));
  
  //변수를 만들어 주었다. 위와 같음
  var myform1 = document.getElementById("myform")
  var testBtn1 = document.getElementById("btn1")
  alert(myform1);
  alert(testBtn1);
}

  function test2(obj) {
  alert(obj);
  alert(obj.value);
	}
	function test3(val){
	alert(val);
	}

	function test4(f){
	//this.form은 <form name=myform)을 가리킴
	alert(f.btn4.value); //[object HTMLFormElement]
	}

	function test5(f){
	alert(f);
	}
</script>

</body>
</html>

 

this: 자기자신의 요소
this는 폼컨트롤요소에서만 사용가능하다.

 

10. Javascript로 CSS 스타일 변경하기

자바스크립트로 css에 접근하여 수정할 수 있다. 

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">   
  <title>getElementById</title>
  <style>
  	body {font-size: 16px; letter-spacing: -0.8px;} 
  	#btn1{width:100px; height: 32px; border: 1px solid #48b4e0; background-image: linear-gradient(45deg, skyblue, #48b4e0); color:#fff;}
  </style>

</head>
<body>  
 	
  <div id="myDiv" style="position:absolute; top: 10px; left: 20px; width: 150px; height: 70px; background-color: blue; color:#fff; text-align: center;">바다</div>
  <br>
  <br>
  <br>
  <br>
  <br>
  <input type="button" name="" id="btn1" value="myDiv접근" onclick="test1()">

	

<script>
	function test1(){
		alert(document.getElementById("myDiv"));
		//순수 자바스크립트로 CSS를 접근한 것이다. 
		alert(document.getElementById("myDiv").style);
		
	}

</script>

</body>
</html>

 

 

그런데 자바스크립트로 작성하면 너무 코드가 길어지기 때문에 JQuery와 같은 라이브러리를 사용해서 제어,수정함.

 

 

스타일과 이미지를 변경한 예제 1)

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">   
  <title>getElementById</title>
  <style>
  	body {font-size: 16px; letter-spacing: -0.8px;} 
  	#btn1, #btn2, #btn3 {width:100px; height: 32px; border: 1px solid #48b4e0; background-image: linear-gradient(45deg, skyblue, #48b4e0); color:#fff;}
  	hr {border: 1px dotted #ddd;}
  </style>

</head>
<body>  
 	
  <div id="myDiv" style="position:absolute; top: 10px; left: 20px; width: 150px; height: 70px; background-color: blue; color:#fff; text-align: center;">바다</div>
  <br>
  <br>
  <br>
  <br>
  <br>
  <input type="button" name="" id="btn1" value="myDiv접근" onclick="test1()">
  <input type="button" name="" id="btn2" value="스타일변경" onclick="test2()">
  <hr>
  <img src="https://images.unsplash.com/photo-1562728535-ac776677e69c?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=400&q=60" id="myImg" alt="">
  <hr>
  <input type="button" name="" id="btn3" value="그림변경" onclick="test3()">


<script>
	function test1(){
		alert(document.getElementById("myDiv"));
		//순수 자바스크립트로 CSS를 접근한 것이다. 
		alert(document.getElementById("myDiv").style.top);
		alert(document.getElementById("myDiv").style.width);
		alert(document.getElementById("myDiv").style.color);
		alert(document.getElementById("myDiv").style.backgroundColor);
		alert(document.getElementById("myDiv").style.left);
		alert(document.getElementById("myDiv").style.position);

		var cssChange = document.getElementById("myDiv").style;
		cssChange.top = "40px";
		
	}

	function test2(){
		document.getElementById("myDiv").style.backgroundColor="green";
		document.getElementById("myDiv").style.color="yellow";
		document.getElementById("myDiv").style.top="300px";
		document.getElementById("myDiv").style.left="300px";
		document.getElementById("myDiv").style.width="100px";
		document.getElementById("myDiv").style.height="200px";
		document.getElementById("myDiv").style.fontSize="20px";
		document.getElementById("myDiv").innerHTML="&#x26FA;";
	}

	function test3(){
		//src 속성을 변경하는 것이다. 
		document.getElementById("myImg").src="https://images.unsplash.com/photo-1494879540385-bc170b0878a7?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=100";
	}

</script>

</body>
</html>

버튼 누르기 전:

 

결과값:

 

11. Javascript로 마우스이벤트

자바스크립트로 css에 접근하여 수정할 수 있다. 

 

예제 1) 마우스 오버했을 때 다른 이미지 보여주기 

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">   
  <title>마우스이벤트</title>
  <style>
  	body {font-size: 16px; letter-spacing: -0.8px;} 
  	#btn1, #btn2, #btn3 {width:100px; height: 32px; border: 1px solid #48b4e0; background-image: linear-gradient(45deg, skyblue, #48b4e0); color:#fff;}
  	hr {border: 1px dotted #ddd;}
  	th {cursor: pointer;}
  </style>

</head>
<body>  
 
 <table border="1">
 	<tr>
 		<th onmouseover="show('o')">오리지날</th>
 		<th onmouseover="show('s')">공상과학</th>
 		<th onmouseover="show('f')">판타지물</th>
 	</tr>
 	<tr>
 		<td colspan="3">
			<div id="original" style="display: block;">
				Stranger Things<br><img src="../images/img01.jpg" alt="">
			</div>
			<div id="scifi" style="display: none;">
				The girl in the spider's web<br><img src="../images/img02.jpg" alt="">
			</div>
			<div id="fantasy" style="display: none;">
				Sense 8<br><img src="../images/img04.jpg" alt="">
			</div>
 		</td>
 	</tr>
 </table> 

<script>
	function show(kind){
		//alert(kind);
		switch(kind){
			case 'o': document.getElementById("original").style.display="block";
					  document.getElementById("scifi").style.display="none";
			 		  document.getElementById("fantasy").style.display="none";
			 		  break;
			case 's': document.getElementById("original").style.display="none";
					  document.getElementById("scifi").style.display="block";
			 		  document.getElementById("fantasy").style.display="none";
			 		  break;
			case 'f': document.getElementById("original").style.display="none";
					  document.getElementById("scifi").style.display="none";
			 		  document.getElementById("fantasy").style.display="block";
					  break;
		}
	}

</script>

</body>
</html>

결과값:

테이블 th에 마우스를 올리면 다른 이미지로 변경됨.

 

 

예제 2) 오디오 플레이리스트 만들기

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">   
  <title>오디오페이지</title>
  <style>
  	body {font-size: 16px; letter-spacing: -0.8px;} 
  	#btn1, #btn2, #btn3 {width:100px; height: 32px; border: 1px solid #48b4e0; background-image: linear-gradient(45deg, skyblue, #48b4e0); color:#fff;}
  	hr {border: 1px dotted #ddd;}
  	th {cursor: pointer;}
  </style>

</head>
<body>  
 <div style="text-align: center;">
 	<h1>Playlist</h1>
 	<img src="../music/gangnamstyle.jpg" width="300px" height="250px" id="poster">
 	<hr><br>
 	<audio id="audio1" src="../music/gangnamstyle.mp3" controls autoplay></audio>
 </div>

 <hr>
<div style="margin: auto; width: 50%;">
<ol>
<li><a href="javascript:loadMusic('../music/candy.jpg', '../music/candy.mp3')">내 귀에 캔디</a></li>
<li><a href="javascript:loadMusic('../music/crayonpop.jpg', '../music/poppop.mp3')">빠빠빠</a></li>
<li><a href="javascript:loadMusic('../music/genie.jpg', '../music/genie.mp3')">소원을 말해봐</a></li>
<li><a href="javascript:loadMusic('../music/sheis.jpg', '../music/sheis.mp3')">그녀가 처음 울던 날</a></li>
</ol>
</div>

<script>
	function loadMusic(jpg,mp3){
		var poster = document.getElementById("poster");
		var audio1 = document.getElementById("audio1");
		poster.src=jpg;
		audio1.src=mp3;
	}

</script>

</body>
</html>

 

 

 

12. Javascript Date객체

Date 객체를 이용하여 오늘 날짜, 시간 출력

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">   
  <title>Date 객체</title>
  <style>
  	body {font-size: 16px; letter-spacing: -0.8px;} 
  	#btn1, #btn2, #btn3 {width:100px; height: 32px; border: 1px solid #48b4e0; background-image: linear-gradient(45deg, skyblue, #48b4e0); color:#fff;}
  	hr {border: 1px dotted #ddd;}
  	th {cursor: pointer;}
  </style>

</head>
<body>  

  <div id="clock">
    <h1>CLOCK</h1>
    <input type="button" name="" id="btn1" value="clock" onclick="">
  </div>

<script>
  
  var today = new Date();
  var str="";
  str += today.getFullYear()+".";
  str += today.getMonth()+1+""+".";
  str += today.getDate()+".";

  switch(today.getDay()){
    case 1: str += "(Monday) "; break;
    case 2: str += "(Tuseday) "; break;
    case 3: str += "(Wednesday) "; break;
    case 4: str += "(Thursday) "; break;
    case 5: str += "(Friday) "; break;
    case 6: str += "(Saturday) "; break;
    case 7: str += "(Sunday) "; break;
  }

  var hour =today.getHours();
  if(hour>=12){
    str += "PM"+(hour-12)+":";
  }else {
    str += "AM"+hour+":";
  }

  str += today.getMinutes()+":";
  str += today.getSeconds();


  document.write("<hr>");
	document.getElementById("clock").innerHTML=str;

</script>

</body>
</html>

결과값:

 

 

 

 

 

 

 

 

 

 

댓글