반응형
반응형
1. (JQuery) 
$(function(){ // 웹브라우저 내의 모든 요소가 준비가 되어야 실행
  // 실행할 기능을 정의해주세요.
});


2. (JQuery)
$.fn.메소드명 = function (인자명) {
//내용
}

3.
자바스크립트 (Javascript)
function 메소드명 (인자값...){

}

4. (1과 4는 등치) (JQuery)
$(document).ready(function(){ // 웹브라우저 내의 모든 요소가 준비가 되어야 실행
	....
});

// 웹브라우저 내의 모든 요소가 준비가 되어야 실행 (Javascript)
5. window.onload = function(){ 
   ....
}
반응형
반응형
$(document).ready(
	$(function() {
		$("#file_input4").on(
			'change',
			function() {
				mappingPath = $(this).val();
				console.log(mappingPath);

				if (window.FileReader) {
					var filename = $(this)[0].files[0].name;
				} else {
					var filename = $(this).val().split('/').pop()
						.split('\\').pop();
				}
				$("#userfile4").val(filename);
			});

	})
);

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="<%=request.getContextPath()%>/resources/js/board.js"></script>
<script data-search-pseudo-elements defer
	src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/js/all.min.js"
	crossorigin="anonymous"></script>

<div class="row mb-3">
	<div class="col-8">
		<div class="row">
			<div class="col-10">
				<input id="file_input4" filestyle="" type="file"
					style="display: none"> <input type="text"
					id="userfile4" class="form-control" name="userfile4"
					disabled="">
			</div>
			<div class="col-2 p-0 m-0 d-flex justify-content-start align-items-center">
				<label for="file_input4" class="btn btn-default"> <span
					class="glyphicon fa fa-upload"></span>
				</label>
				<button type="button" class="btn-close" id="erase_btn4" aria-label="Close"></button>
			</div>
		</div>
	</div>
</div>

 

 

반응형
반응형
const pattern_num = /[0-9]/;	// 숫자 
const pattern_eng = /[a-zA-Z]/;	// 문자 
const pattern_spc = /[~!@#$%^&*()_+|<>?:{}]/; // 특수문자
const pattern_kor = /[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/; // 한글체크
const pattern_space = /[\s]/g; // 공백체크

var num = userId.search(pattern_num);
var eng = userId.search(pattern_eng);
var spc = userId.search(pattern_spc);
var kor = userId.search(pattern_kor)
var space = userId.search(pattern_space);

if (num >= 0) {
	alert("숫자를 입력하셨습니다.");
	return false;
}else if (num >= 0 || spc >= 0 || kor >= 0 || space >= 0) {
	alert("영어만 입력해주세요");
	return false;
}

프론트에서도 유효성 체크를 하고 백에서도 유효성 체크가 필요하다

반응형
반응형
if (confirm("인덱스를 생성하시겠습니까?") == true){
	return true;
}else{
	return false;
}
반응형
반응형

 

var PageSize = 10; // 페이지당 보여줄 목록수
var PageGroupSize = 10; // 페이지네이션 리스트 수
var TableAndPage = "makeTableAndPagination";
var currentPageNumStorage;

$(document).ready(
	$(function() {
		makeTableAndPagination('1');
	})
)

var makeTableAndPagination = function(p_currentPage) {

	var TotalCount;
	var count;

	var tag = "";

	$.ajax({
		type: "GET",
		url: "getInformation?pageNum=" + p_currentPage,
		success: function(data) {

			// 총 데이터 수
			TotalCount = data.total;

			// 페이지네이션 그리기
			tagFactoryPage(p_currentPage, TotalCount);
			
			// 현재 페이지번호 → 현재 페이지 번호를 기억시켜 다른 action을 해도 그대로 있게 하기
			currentPageNumStorage = p_currentPage;
		}
	}); // ajax 종료
}


var tagFactoryPage = function(currentPage, total) {

	var total = total; // 전체건수
	var currentPage = currentPage; // 현재페이지

	var pageTotCount = Math.ceil(tot_count / indexPageSize); // 전체페이지수 → 15 / 10 = 0.5 → 1
	var numPageGroup = Math.ceil(currentPage / indexPageGroupSize); // 현재페이지가 10 이내일 경우 → 1
																	
	var startPage = (numPageGroup - 1) * PageGroupSize + 1; // 1 11 21
	var endPage = startPage + PageGroupSize - 1 // 10 20 30

	if (endPage > pageTotCount) endPage = pageTotCount; // 마지막페이지가 전체페이지보다 큰경우 처리 20 > 12

	var HtmlTag = "";

	// 첫번째페이지 표시 >> 누르면 가장 마지막 페이지 이동
	// 1 ~ 10 페이지에 속하지만 않으면 무조건 나옵니다. 
	if (startPage <= PageGroupSize) HtmlTag += ""; // startPage(1, 10, 20) 이 PageGroupSize(1[1~10], 2[11~20]) 보다
	else HtmlTag += "<li class='page-item page-item1'><a href=# class='page-link' onclick=" + TableAndPage + "('1')>  《 </a></li>";

	// 이전페이지 표시 < 누를시 11 ~ 20 은 10으로 21 ~ 30 은 20으로 이동합니다.
	// 1 ~ 10 페이지에 속하지만 않으면 무조건 나옵니다. 
	if (startPage <= PageGroupSize) HtmlTag += "";
	else HtmlTag += "<li class='page-item page-item1'><a href=# class='page-link' onclick=" + TableAndPage + "('" + (startPage - 1) + "')>〈 </a></li>";

	var idx = 0;
	for (idx = startPage; idx <= endPage; idx++) {

		// 자기자신의 페이지일경우 active 활성화와 하이퍼링크 제거
		if (currentPage == idx) HtmlTag += "<li class='page-item page-item1 active' id=pagination value='" + idx + "'><a href=# class='page-link'>" + idx + "</a></li>";
		else HtmlTag += "<li class='page-item page-item1'><a class='page-link' href=# onclick=" + TableAndPage + "('" + idx + "')>" + idx + "</a></li>";

	}

	// 다음페이지 표시 > 누를시 1 ~ 10 은 11으로 11 ~ 20 은 21으로 이동합니다.
	// 전체 페이지가 마지막 페이지부분만 아니면 >로 이동 가능한 페이지네이션을 만듭니다.
	if (pageTotCount == endPage) HtmlTag += "";
	else HtmlTag += "<li class=page-item page-item1><a class='page-link' onclick=" + TableAndPage + "('" + (endPage + 1) + "')>〉</a></li>"; // 다음

	// 마지막페이지 표시 >> 누르면 가장 마지막 페이지 이동
	// 전체 페이지가 마지막 페이지부분만 아니면 >로 이동 가능한 페이지네이션을 만듭니다.
	if (pageTotCount == endPage) HtmlTag += "";
	else HtmlTag += "<li class=page-item page-item1><a class='page-link' href=# onclick=" + TableAndPage + "('" + pageTotCount + "')> 》 </a></li>";

	$(".page-item1").remove();         // 페이지네이션이 그려졌던 걸 지우고 다시 그립니다. → 안 지우면 페이지 이동시 남아 있는 상태로 붙여넣기가 된다.
	$("#page_list_navi").append(HtmlTag); // 새롭게 프로젝트 list를 생성한다.

}

ajax통신을 하는 javascript입니다.

 

<div class="paging">
    <ul class="pagination justify-content-center"
        id="page_list_navi_index">
    </ul>
</div>

html에서 페이지네이션을 그려넣을 부분입니다.

무조건 전체갯수가 필요합니다

반응형
반응형

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button id ="btn">click</button>
    <script>
        var btn = document.getElementById("btn");
    
        btn.onclick = function(){
            alert("event 1");
        }

        btn.onclick = function(){
            alert("event 2");
        }
        
    </script>
</body>
</html>

기존의 이벤트 핸들러는 해당 요소에 하나의 이벤트만 적용시킬 수 있었습니다.

하지만 이벤트 리스너를 이용해 하나의 요소에 여러 개 이벤트 처리가 가능하게 됩니다.

위와 같은경우에는 두번째의 onclick으로 덮어씌워지게 됩니다.

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button id ="btn">click</button>
    <script>
        var btn = document.getElementById('btn');

        btn.addEventListener('click',function(){
            alert('event 1');
        });
        
        btn.addEventListener('click',function(){
            alert('event 2');
        });
    </script>
</body>
</html>

이와 같이 addEventListener를 이용해 클릭했을 때 콜백메소드를 호출합니다. 그래서 두개의 이벤트가 순차적으로 작동하게 됩니다.

 

.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    #box{
        width: 100px; height:100px;
        border: 3px solid black;
    }

    #box.hover{
        background-color:orange;
        color:white;
    }
</style>
<body>
    <div id ="box">
        <p>마우스를 올려 주세요</p>
    </div>

    <script>
        var btn = document.getElementById('box');

        
        btn.addEventListener('mouseover',function(){
            box.setAttribute('class','hover');
        });
        
        btn.addEventListener('mouseout',function(){
            box.removeAttribute('class');
        });
        
    </script>
</body>
</html>

마우스를 올렸을 때 class="hover" 속성을 추가시키고 마우스가 나가면 class속성을 없애버립니다.

이벤트 리스너의 특징은 on을 안 붙힙니다 앞에 테이블로 적어뒀던 onclick, onMouseover 등에서 on을 뺍니다.

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
</style>
<body>
    <form id ="frm">
        <fieldset>
            <legend>주소록</legend>
            <textarea name ="txt" id="txt2" cols ="30" rows="10">입력해주세요</textarea><br>
            <input type ="submit" id = "q" value ="불러오기">
        </fieldset>
    </form>

    <script>
        var address =["김철수","email: kcs@gmail.com"]; // 미리 값을 준비

        var q = document.getElementById('frm'); // from id값 받아온다.
        
        function addr_search(){
            var textarea = q.txt; // q의 name값을 가져옴 q.txt 여기서 txt는 name값

            textarea.value = '이름 / 주소 \n'; // .value란 해당 태그에 해당하는 글자를 의미 여기선 입력해주세요 이다.
            textarea.value += address[0] + ' , ' + address[1] + '\n'; // 준비한 값들을 넣는 과정
        }

        q.addEventListener('submit', function(){ // 버튼을 눌렀을 때 function()이하의 내용이 작동한다. 
            event.preventDefault(); // 폼 전송 기본 이벤트 발생 안 하도록 함
            addr_search(); // addr_search 메소드를 실행시킴
        })
        
    </script>
</body>
</html>

 

반응형
반응형
이벤트 속성명 설명
onclick 마우스로 클릭할 때
onmouseover(hover 1단계) 요소 안에 마우스가 들어갔을 때
onmouseover(hover 2단계) 요소에서 마우스가 벗어났을 때
onkeydown 키보드를 입력할 때
onkeyup 키를 눌렀다 놓을 때
onfocus , onblur 요소가 선택됐거나 해제됐을 때(블록지정?)
onsubmit 폼 전송 이벤트가 발생했을 때
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <a href ="www.naver.com" onclick="alert('구글로 이동합니다')">구글</a>
</body>
</html>

작은 따옴표 잘 구분해주세요 저는 다 큰 따옴표로 썼는데 이제 구분해서 써야겠습니다.

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<script>
    window.onload = function(){
        var h1 = document.querySelector('h1');
        h1.innerHTML = '문서를 로딩했습니다.';
    }
</script>
<body>
    <h1>홈페이지에 오신 것을 환영합니다.</h1>
</body>
</html>

바로 바뀌는 것이 아닌 홈페이지에 엑세스 됐을 때 바뀝니다. 새로고침 연타해서 보시면 바뀌과정이 눈에 보입니다.

window.onload란 홈페이지가 떴을때 function을 실행시키는 것입니다.

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<script>
    window.onload = function(){
        var h1 = document.querySelector('h1');
        
        h1.onclick = function(){
            this.innerHTML = '문서를 로딩했습니다.';
        }
    }
</script>
<body>
    <h1>홈페이지에 오신 것을 환영합니다.</h1>
</body>
</html>

홈페이지가 준비가 완료되면 h1 css생성자를 가져오고 h1.onclick 을 사용할 수 있게 합니다.

 

this는 자기자신을 의미합니다. 여기선 h1을 의미하죠

 

 

// ──────────────────────────── 이벤트 바인딩 ────────────────────────────

// 우측 마우스 클릭시 이벤트 리스너
document.addEventListener('contextmenu', handleCreateContextMenu);

// 좌측 마우스 클릭시 이벤트 리스너
document.addEventListener('click', handleClearContextMenu);

// 드래그 했을 때 이벤트 리스너
document.addEventListener("drag", function (event) {
    console.log("이동 중");
}, false);

// 블럭지정 했을 때 이벤트 리스너
document.addEventListener('selectionchange', () => {
    console.log(document.getSelection().toString()); // 블럭지정 내용
});
반응형
반응형

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    #box{
        width:100px;
        height:100px;
        border:3px solid black;
    }
    .box{
        background-color: orange;
    }
</style>
<body>
    <div id = "box" onclick ="chnageColor()">Hello box</div>

    <script>
        function chnageColor(){
            var box = document.getElementById("box");
            box.setAttribute("class","box");
        }
    </script>
</body>
</html>

📝setAttribute

원래 div는 id값만 가지고 있지만 Id값을 받아와 class="box"라는 속성을 setAttribute로 추가시켰습니다.

 

그래서 background-color가 바뀌게 된 거죠

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    #box{
        width:100px;
        height:100px;
        border:3px solid black;
    }
    .box{
        background-color: orange;
    }
</style>
<body>
    <div id = "box" onclick ="chnageColor()">Hello box</div>

    <script>
        function chnageColor(){
            var box = document.getElementById("box");
            box.setAttribute("class","box");

            var getAttr = box.getAttribute("class");
            alert(getAttr);
        }
    </script>
</body>
</html>

📝getAttribute

getAttribute는 속성에 해당하는 값을 가져옵니다 여기선 class="box"이니 box가 alert으로 경고창이 뜨는겁니다.

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    #box{
        width:100px;
        height:100px;
        border:3px solid black;
    }
    .box{
        background-color: orange;
    }
</style>
<body>
    <div id = "box" onclick ="chnageColor()">Hello box</div>
    <button onclick="removeColor()">버튼</button>
    <script>
        function chnageColor(){
            var box = document.getElementById("box");
            box.setAttribute("class","box");

            var getAttr = box.getAttribute("class");
            alert(getAttr);
        }

        function removeColor(){
            var box = document.getElementById("box");
            box.removeAttribute("class");
            
        }
    </script>
</body>
</html>

 

📝removeAttribute

버튼을 누르면 removeAttributeclass 속성을 없애서 .box에 적용된 내부스타일이 적용이 안 되게 되는 거입니다.

 

반응형
반응형

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1 id ="title">
        여기를 변경해주세요
    </h1>

    <script>
        var title = document.getElementById("title");
        
        title.style.color = "white";
        title.style.background = "orange";
        title.innerHTML = "JavaScript로 문서를 조작";
    </script>
</body>
</html>

이런식으로 자바스크립트로 HTML 태그의 id값으로 접근해 조작할 수 있습니다.

 

📝document.getElementById

 

일단 태그에 id값을 주고 document.getElementById(id값)으로 접근할 수 있습니다.

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <ul>
        <li>first</li>
        <li>second</li>
        <li>third</li>
    </ul>


    <script>
        var li = document.querySelector("li");

        li.style.color = "red";
        li.style.background = "blue";
    </script>
</body>
</html>

CSS 선택자를 사용해 접근할 수 있습니다.

 

📝document.querySelector

document.querySelector("CSS선택자")로 접근할 수 있습니다. 가장 편하지만 첫 번째 요소만 선택할 수 있습니다.

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <ul>
        <li>first</li>
        <li>second</li>
        <li>third</li>
    </ul>


    <script>
        var li = document.getElementsByTagName('li');
        li[1].style.backgroundColor = "red";
        li[1].style.color ="white";
    </script>
</body>
</html>

📝document.getELementsByTagName

document.getElementsByTagName으로 태그명으로 접근 가능합니다 이와 같은 경우 인덱스로 다른 요소에 접근이 가능합니다.

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <ul>
        <li>first</li>
        <li>second</li>
        <li>third</li>
    </ul>

    <button onClick = "setColor()"> click</button>


    <script>
        function setColor(){
            var li = document.querySelectorAll("li");

            for(var i = 0; i < li.length ; i++){
                li[i].style.color = "green";
                li[i].style.backgroundColor ="orange";
            }
        }
    </script>
</body>
</html>

📝onClick, document.querySelectorAll

onClick 이란 클릭시 setColor()라는 메소드가 실행됩니다.

document.querySelectorAll(CSS선택자)선택자 각각 다 접근이 가능합니다.

그리고 배열로 잡히게됩니다. 각 인덱스를 for문으로 돌아서 적용시키는 문입니다.

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <ul>
        <li class="a">first</li>
        <li class="a">second</li>
        <li class="a">third</li>
    </ul>

    <button onClick = "setColor()"> click</button>


    <script>
        function setColor(){
            var li = document.getElementsByClassName("a");

            for(var i = 0; i < li.length ; i++){
                li[i].style.color = "green";
                li[i].style.backgroundColor ="orange";
            }
        }
    </script>
</body>
</html>

📝getElementsByClassName

위와 동일하지만 class이름으로 가져옵니다 getElementsByClassName을 이용해 같은 클래스 이름으로 배열로 가져옵니다.

반응형