1. Java Script 기본 구조
기본 문법
<script type="text/javascript">
//java script 주석 1
/*
java script 주석 2
*/
//alert([value]);
alert("Hello, JS ! ");
// console
//console.log("[value]");
console.log("콘솔 테스트");
//브라우저에서 F12눌러서 console tab에서 확인할 수 있음
// 변수 선언
// var [변수명] = [value];
var nick = "아이유";
console.log(nick); //console에 '아이유'뜸
alert(nick); //alert으로 '아이유' 뜸
// for문
// 주의할 점 : int i=0이 아니라, var i=0 으로 선언!
for(var i = 0; i < 3; i++){
alert(nick);
}
</script>
*console , alert : java script의 진행 상황을 보여줌
console
alert
2. function
기본 문법
<script type="text/javascript">
//1. return값이 없는 경우
function [function이름]([매개변수]) {
[function 구현부];
}
//2. return값이 있는 경우
function[function이름]([매개변수]){
return [return값];
}
</script>
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Java Script Function</title>
<script type="text/javascript">
function hello() {
console.log("hello");
alert("Hello!");
}
function bye(name){
alert(name);
}
function testParam(name, age) {
alert("이름: "+name+" | 나이: "+age+"살" +" | 리턴값 : "+ testReturn());
}
//return value
function testReturn(){
return "쉬는 시간";
}
</script>
</head>
<body>
<!-- onclick 뒤 함수명 -->
<input type="button" value="함수테스트1" onclick="hello()"><br><br>
<input type="button" value="함수테스트2" onclick="bye('여름')"><br><br>
<input type="button" value="함수테스트3" onclick="bye('가을')"><br><br>
<input type="button" value="함수테스트4" onclick="testParam('두유', 1)"><br><br>
</body>
</html>
3. confirm 함수
: confirm 함수는 alert에서 확인을 누르면 true를 리턴, 취소를 누르면 false를 리턴한다.
+ location.href = "[url path]";
: 해당 url path로 이동
기본 문법
<script type="text/javascript">
function confirmTest(){
var result = confirm("confirm 함수 테스트");
if (result){ //alert 버튼에서 확인 누를 경우
alert("true 반환")
} else { //alert 버튼에서 취소 누를 경우
//alert("false 반환")
// 다른 페이지로 이동시킨다
location.href = "http://naver.com";
}
}
</script>
4. form
: 브라우저로부터 입력받은 정보를 서버에 전송해주기 위해 필요한 html tag
getting value
document.[form이름].[component이름].value
setting value
document.[form이름].[component이름].value = "[할당할 값]" ;
focus() : 커서를 위치하게 하기
[component객체].focus();
기본 문법
<form name="[form이름]">
[info] <input type="[component타입]" name="[component이름]">
<input type="[button] or [submit]" value="[버튼에 보여줄 글씨]" onclick="[함수명]()">
</form>
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScript form text 입력 양식 제어</title>
<script type="text/javascript">
function accessForm(){
console.log("함수 실행");
// value getting
//userId라는 name component(text 입력양식)에 접근해서
//사용자가 입력한 정보 확인한다
// idComp : 입력 양식 객체를 변수에 저장한다
var idComp = document.testForm.userId;
//document.form이름.coponent이름.value -> 입력한 값 반환
//var data = document.testForm.userId.value;
var data = idComp.value;
alert("아이디는 "+data+ " 입니다.");
//alert(document.testForm.userId); //component(text 입력양식) 객체가 띄워짐
// value setting
//사용자가 입력한 text box에 정보를 지운다(초기화한다)
//document.testForm.userId.value = "";
idComp.value = "";
//포커스를 준다 -> 커서를 위치하게 한다.
//document.testForm.userId.focus();
idComp.focus();
}
</script>
</head>
<body>
<!-- form tag: 서버 전송을 위해 필요함 -->
<form name="testForm">
아이디 <input type="text" name="userId">
<input type="button" value="test" onclick="accessForm()">
</form>
</body>
</html>
5. isNaN 함수
: 숫자인지 확인하는 함수 (boolean으로 리턴)
기본 문법
<script type="text/javascript">
function deposit(){
//form 객체를 변수 f에 할당
var f = document.testForm;
if (isNaN(f.money.value.trim())){ //숫자여부 확인
alert("숫자입니다");
} else {
alert("숫자가 아닙니다.")
}
}
</script>
6. 입력양식 input - id
: input의 id는 현 웹페이지에서 유일(unique)해야 한다.
document.getElementById("[id 이름]")
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScript input 입력양식 id</title>
<script type="text/javascript">
function testId() {
//input 입력양식에 id로 접근해서 value를 확인
//iput의 id는 현 웹페이지에서 유일해야 한다.
//Component 객체 변수 생성
var nickComp = document.getElementById("nick");
//getting value
alert("닉네임: " + nickComp.value);
//setting value
nickComp.value = "변경";
}
</script>
</head>
<body>
<form>
닉네임 <input type="text" value="기본" id="nick">
<input type="button" value="테스트" onclick="testId()">
</form>
</body>
</html>
7. 입력양식 input - div, span
form 입력 양식 정보를 set/get하는 attribute → value
div, span 입력 양식 정보를 set/get하는 attribute → innerHTML
기본 문법
<body>
<div id="testDiv"><font color="green">이 부분은 div 영역입니다.</font></div>
<span id="testSpan">이 부분은 span 영역입니다.</span>
<span>이 부분은 id가 지정되지 않은 영역입니다.</span>
</body>
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Java Script로 div/span 제어</title>
<!-- CSS 영역-->
<style type="text/css">
/*
# -> id를 지정할 때 사용
. -> class를 지정할 때 사용
*/
/*id=testDiv 영역*/
#testDiv {
background-color: yellow;
}
/*id=testSpan 영역*/
#testSpan {
background-color: lime;
}
</style>
<!-- JS 영역-->
<script type="text/javascript">
function goDiv() {
//testDiv : Div Component 객체 변수 생성
var testDivComp = document.getElementById("testDiv");
//innerHTML : div 영역 내 HTML 요소값
// getting innerHTML
alert(testDivComp.innerHTML);
// setting innerHTML
// div 영역 내 html을 할당
testDivComp.innerHTML = "<font color='blue' size='6'>하하하하</font>";
}
function goSpan() {
//id가 testSpan인 영역의 html 정보를
//1. alert으로 확인하고 --getting html
//2. <font size='3' color='red'>쉬는 시간</font> 로 할당 -- setting html
//testSpanComp : Span Component 객체 변수 생성
var testSpanComp = document.getElementById("testSpan");
// getting innerHTML
alert(testSpanComp.innerHTML);
// setting innerHTML
testSpanComp.innerHTML = "<font size='3' color='red'>쉬는 시간</font>";
}
</script>
</head>
<body>
<div id="testDiv"><font color="green">이 부분은 div 영역입니다.</font></div>
<span id="testSpan">이 부분은 span 영역입니다.</span>
<span>이 부분은 id가 지정되지 않은 영역입니다.</span>
<br><br>
<input type="button" value="testDiv" onclick="goDiv()">
<input type="button" value="testSpan" onclick="goSpan()">
</body>
</html>
8. 비교 연산자 operator
기본 문법
== : 강제 형변환 포함
=== : 염격한 비교(타입까지 포함) *===를 권장
문자열 형태의 숫자일 경우에는 형변환 → parseInt([variable])
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>연산자 테스트</title>
<script type="text/javascript">
function test() {
var name1 = "사과";
var name2 = "사과 ";
//문자열 비교
alert(name1.trim() == name2.trim()); //trim()을 이용해 여백은 제거
//문자열 길이
alert(name1.length); //2
alert(name2.length); //3 (trim 포함)
var age1 = 21;
var age2 = '21';
// == 사용 : 내부적 형변환
alert(age1 == age2); //true
// === 사용 : 타입까지 비교
alert(age1 === age2); //false
var age3 = age1 + 1;
var age4 = age2 + 1;
alert(age3); //22 (21+1)
alert(age4); //211 ('21'+'1')
//문자열 형태의 숫자일 경우에는 형변환
var age5 = parseInt(age2); //age2를 문자->숫자로 형변환
alert(age1 === age5); //true
}
</script>
</head>
<body>
<input type="button" value="연산자테스트" onclick="test()">
</body>
</html>
9. 배열 array
기본 문법
[ 배열의 Component 객체 생성 ]
* 동일한 component name 입력 양식은 배열로 처리
방법 1 : form name으로 접근
→ document.form name.component name
방법 2 : getElementsByName으로 접근
→ document.getElementsByName("component name")
<script type="text/javascript">
function testArray1() {
//배열 생성
var arr = new Array(3);
//배열 요소 할당
arr[0] = "노랑색";
arr[1] = "파란색";
arr[2] = "초록색";
//배열 alert
for (var i = 0; i < arr.length; i++) {
alert(arr[i]);
}
}
// 모든 배열 요소 확인
function testArray2() {
//form의 food Component 객체 생성
//document.form이름.component이름
var foodCompArray = document.foodForm.food;
//입력 양식의 객체 길이 반환 : length
alert(foodCompArray.length); //3
//배열의 요소 확인 : value
for (var i = 0; i < foodCompArray.length; i++) {
alert(foodCompArray[i].value); //떡볶이
}
}
</script>
10. Checkbox 체크박스
.checked : boolean
→ Checkbox 에는 checked라는 속성이 있다
→ 체크가 되어있으면 true 반환 / 체크가 되어있지 않으면 false를 반환한다
기본 문법
<form>
<input type="checkbox" name="[component이름]" value="[value]"><br>
</form>
예시
선택한 메뉴 항목에 대해 메뉴 정보를 alert 한 번으로 모두 띄우기
만약 아무 메뉴도 선택하지 않았다면 "메뉴를 선택하세요."라는 alert 띄우기
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
/*
선택한 메뉴 항목에 대해 메뉴 정보를 alert 한번으로 모두 출력
만약 선택한 메뉴가 없으면 "메뉴를 선택하세요."으로 alert으로 출력
*/
function orderMenu() {
// "menu" array component 객체 생성
var checkboxCompArray = document.getElementsByName("menu");
// order 객체 초기화 생성
var order = "";
// for문에서 각 배열 접근
// .checked를 이용해 선택 여부 확인하여 order에 누적
for (var i=0; i<checkboxCompArray.length; i++){
if (checkboxCompArray[i].checked){
order += checkboxCompArray[i].value+", ";
}
}
// 주문이 없을 경우(order에 값이 없을 경우)와 아닌 경우
if (order === ""){
alert("메뉴를 선택하세요.");
} else {
//주문 누적된 order alert
alert("주문하신 메뉴: " + order);
//주문 완료 후 form을 초기화 (.reset())
document.getElementById("menuForm").reset();
}
}//orderMenu function
</script>
</head>
<body>
<form id = "menuForm">
<input type="checkbox" name="menu" value="1번">1번<br>
<input type="checkbox" name="menu" value="2번">2번<br>
<input type="checkbox" name="menu" value="3번">3번<br>
<input type="button" value="주문" onclick="orderMenu()">
</form>
</body>
</html>
11. action / submit
* action
: action은 처리할 서버 프로그램의 url을 명시한다.
: onsubmit = "return [function]"
- 해당 function이 false를 리턴하면 정보가 전송되지 않고,
true 혹은 리턴값을 따로 명시해놓지 않았다면 기본 submit으로 전송된다.
* form 내의 submit
: button과 다르게, 서버에 form정보를 전송할 때 사용한다.
기본 문법
<form action = "FindServlet" onsubmit="return [함수명]">
아이디 <input type="text" name="[component name]">
<!-- button과 다르게, 서버에 form정보를 전송할 때 사용한다. -->
<input type="submit" value="[value]">
</form>
예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Form Servlet</title>
<script type="text/javascript">
function checkForm() {
var idComp = document.getElementById("userId");
if(idComp.value != ""){
alert("서버로 전송되겠군요!")
idComp.reset();
} else {
alert("아이디를 입력하세요.")
//전송하지 않기 위해 false를 리턴한다
return false;
}
}
</script>
</head>
<body>
<!-- action은 처리할 서버 프로그램의 url을 전송한다. -->
<form action="FindServlet" onsubmit="return checkForm()">
아이디 <input type="text" name="userId" id="userId">
<!-- button과 다르게, 서버에 form정보를 전송할 때 사용한다. -->
<input type="submit" value="전송">
</form>
<hr>
</body>
</html>
총 정리
[조건]
입금하기 submit 버튼을 누르면
금액 부분이 공란이면
-> '금액을 입력하세요' alert
금액이 공란이 아니지만 숫자가 아닐 경우 (isNaN())
-> '숫자로 입력하세요' alert
-> 입력란에 정보 지워주기
위 두 경우는 submit 시키지 않음
위 두 경우가 아닌 경우,
-> 전송을 시키되,
-> confirm을 이용해서 '확인'을 누를 경우에만 전송시키기
-> 취소 누르면 전송시키지 않기
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>submit 연습</title>
<!--
입금하기 submit 버튼을 누르면
금액 부분이 공란이면
-> '금액을 입력하세요' alert
금액이 공란이 아니지만 숫자가 아닐 경우 (isNaN())
-> '숫자로 입력하세요' alert
-> 입력란에 정보 지워주기
위 두 경우는 submit 시키지 않음
위 두 경우가 아닌 경우,
-> 전송을 시키되,
-> confirm을 이용해서 '확인'을 누를 경우에만 전송시키기
-> 취소 누르면 전송시키지 않기
-->
<script type="text/javascript">
function depositAction() {
var moneyComp = document.getElementById("money");
var flag = false;
if (moneyComp.value === "") {
alert("입금액을 입력하세요.");
} else if (isNaN(moneyComp.value)){ //숫자가 아니면 true
alert("숫자로 입력하세요.")
moneyComp.value = "";
} else {
//confirm함수는 확인누르면 true, 취소누르면 false 반환
flag = confirm("입금하시겠습니까?");
}
return flag;
}//function
</script>
</head>
<body>
<form action="depositForm" onsubmit="return depositAction()">
금액<input type="text" name="money" id="money">
<input type="submit" value="입금하기">
</form>
</body>
</html>
'Java Web Programming > 2. JavaScript' 카테고리의 다른 글
[JavaScript] 팝업창 띄우기 (0) | 2020.09.03 |
---|