반응형
// use strict
// 1. 동적타입 언어를 정적타입 언어로 바꾼다 → you can debug
// 2. 동적타입에 대한 처리를 안 한다 → system speed up
'use strict';
// a = 6; // 'a is not defined' Error occured
반응형
// use strict
// 1. 동적타입 언어를 정적타입 언어로 바꾼다 → you can debug
// 2. 동적타입에 대한 처리를 안 한다 → system speed up
'use strict';
// a = 6; // 'a is not defined' Error occured
<!-- 로딩 -->
<div id="fade" class="black_background"></div>
<div id="light" class="white_content">
<img src="<%=request.getContextPath()%>/resources/image/loading.gif"
style="width: 100px; height: 100px;"> <span
style="margin: 0 0 0 10px;">진행 중입니다.</span>
</div>
<!-- 로딩 -->
.black_background {
position: fixed; /* fixed를 사용하여 스크롤에 따라 따라다니지 않도록 합니다. */
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background: #666666 ;
z-index:1;
opacity:.50;
}
.white_content {
display: none;
position: absolute;
padding: 16px;
width:350px;
border: 16px solid #E3F2FC;
background-color: white;
z-index:9999;
overflow: auto;
}
function wrapWindowByMask() {
/** 화면의 높이와 너비를 구한다. **/
var maskHeight = $(document).height();
var maskWidth = $(document).width();
/** 마스크의 높이와 너비를 화면 것으로 만들어 전체 화면을 채운다. **/
$('#fade').css({ 'width': maskWidth, 'height': maskHeight });
}
/// 화면의 중앙에 레이어띄움
function showLayer() {
wrapWindowByMask();
$("#light").css("position", "absolute");
$("#light").css("top", Math.max(0, (($(window).height() - $("#light").outerHeight()) / 2) + $(window).scrollTop() - 100) + "px");
$("#light").css("left", Math.max(0, (($(window).width() - $("#light").outerWidth()) / 2) + $(window).scrollLeft()) + "px");
$('#fade').show(); $('#light').show();
}
function close() {
$('#fade').hide(); $('#light').hide();
}
[JavaScript Code] UUID 만들기 (0) | 2022.09.13 |
---|---|
[JavaScript Code] 업로드 파일 미리보기 구현하기 (0) | 2022.09.13 |
[JavaScript Code] LocalStorage(cookie)로 최근검색어 구현 (0) | 2022.06.02 |
[JavaScript Code] Code Enter 이벤트 (0) | 2022.05.22 |
[JavaScript Code] 배열 shuffle (0) | 2022.05.22 |
// 최근 검색어 클릭시 해당 검색어로 조회
function inputKeyword (keyword){
var recent_keyword = $(keyword).text();
$("#txt01").val(recent_keyword); // 검색어
boardListJson('1');
}
function setLocalStorage(){
/** keyword 쿠기가 존재하는지 체크 **/
checkingKeywordList = localStorage.getItem("keyword");
/** 쿠키 1개 이상인 경우 처리 **/
if (checkingKeywordList != null && !(checkingKeywordList === undefined)){
search_arr = [];
search_arr = search_arr.concat(localStorage.getItem("keyword").split(","));
var hasSearchWord = search_arr.indexOf(g_search);
// 같은 값이 존재 할 때 처리 방법
if(hasSearchWord == -1){
// getItem 받아올시 배열이 아니라 string이라서 ,로 배열로 만들어줘야한다.
search_arr.unshift(g_search);
localStorage.setItem("keyword", search_arr);
}
}else{ /** 쿠키가 처음 들어간 경우 **/
search_arr = [];
search_arr.unshift(g_search);
localStorage.setItem("keyword", search_arr);
}
var recentKeywordTag = "";
for(var i = 0; i < search_arr.length; i++){
recentKeywordTag += "<li><a href='#' onclick='inputKeyword(this)'>" + search_arr[i] + "</a></li>";
if(i == 4) {
search_arr = search_arr.slice(0, 5); // 너무 쌓이지 않게 5넘어가는 인덱스 삭제 [5개만 보여줄 예정]
localStorage.setItem("keyword", search_arr);
break; // 5개만 보여주기
}
}
$('#recent_keyword').html(recentKeywordTag);
}
// 페이지 로드 될 때 보여줄 작업
function getLocalStorage(){
/** keyword 쿠기가 존재하는지 체크 **/
checkingKeywordList = localStorage.getItem("keyword");
/** 쿠키 1개 이상인 경우 처리 **/
if (checkingKeywordList != null && !(checkingKeywordList === undefined)){
search_arr = search_arr.concat(localStorage.getItem("keyword").split(","));
console.log("1 localStroage : " + localStorage.getItem("keyword"));
}
var recentKeywordTag = "";
for(var i = 0; i < search_arr.length; i++){
recentKeywordTag += "<li><a href='#' onclick='inputKeyword(this)'>" + search_arr[i] + "</a></li>";
if(i == 5) break; // 5개만 보여주기
}
$('#recent_keyword').html(recentKeywordTag);
}
[JavaScript Code] 업로드 파일 미리보기 구현하기 (0) | 2022.09.13 |
---|---|
[JavaScript Code] 로딩 스피너 구현하기 (overlay) (0) | 2022.09.04 |
[JavaScript Code] Code Enter 이벤트 (0) | 2022.05.22 |
[JavaScript Code] 배열 shuffle (0) | 2022.05.22 |
[JavaScript Code] context menu(우클릭), 클립보드(Clip Board), 드래그(Drag), 블럭지정 이벤트 (0) | 2022.04.23 |
$("#userAnswer").keydown(function(key) {
if (key.keyCode == 13) {
// 동작할 내용
}
});
[JavaScript Code] 로딩 스피너 구현하기 (overlay) (0) | 2022.09.04 |
---|---|
[JavaScript Code] LocalStorage(cookie)로 최근검색어 구현 (0) | 2022.06.02 |
[JavaScript Code] 배열 shuffle (0) | 2022.05.22 |
[JavaScript Code] context menu(우클릭), 클립보드(Clip Board), 드래그(Drag), 블럭지정 이벤트 (0) | 2022.04.23 |
[JavaScript Code] 스피너 로딩화면 (0) | 2022.04.23 |
$(document).ready(function() {
links = ["A", "B", "C"];
shuffle(captchaLinks);
console.log(links);
});
function shuffle(array) {
array.sort(() => Math.random() - 0.5);
}
[JavaScript Code] LocalStorage(cookie)로 최근검색어 구현 (0) | 2022.06.02 |
---|---|
[JavaScript Code] Code Enter 이벤트 (0) | 2022.05.22 |
[JavaScript Code] context menu(우클릭), 클립보드(Clip Board), 드래그(Drag), 블럭지정 이벤트 (0) | 2022.04.23 |
[JavaScript Code] 스피너 로딩화면 (0) | 2022.04.23 |
[JavaScript Code] function 선언 방법 (document.ready(), window.onload) (0) | 2022.03.19 |
// 우측 마우스 클릭시 이벤트 리스너
document.addEventListener('contextmenu', handleCreateContextMenu);
// 나만의 context menu 생성
function handleCreateContextMenu(event) {
// 기본 Context Menu가 나오지 않게 차단
event.preventDefault();
// 나만의 context menu
const ctxMenu = document.getElementById('context_menu');
// 노출 설정
ctxMenu.style.display = 'block';
// 위치 설정
ctxMenu.style.top = event.pageY + 'px';
ctxMenu.style.left = event.pageX + 'px';
// 각주만들기 누를시에 블록지정이 풀려서 카피 내용이 사라지기 때문에 우측을 눌렀을 때 카피되는 과정이 필요하다
document.execCommand('copy');
// 클립보드 내용 가져오는 것은 비동기로 처리되기 때문에
// 비동기 함수로 처리해서 값이 다 나왔을 때 필요한 값을 받는 과정이 필요하다
getClipboardContents();
}
// 클립보드 내용을 가져오려면 비동기 처리가 필요하다.
async function getClipboardContents() {
try {
footnoteContent = await navigator.clipboard.readText();
console.log('Pasted content: ', text);
} catch (err) {
console.error('Failed to read clipboard contents: ', err);
}
}
// 좌측 마우스 클릭시 이벤트 리스너
document.addEventListener('click', handleClearContextMenu);
// Context Menu 제거
function handleClearContextMenu(event) {
const ctxMenu = document.getElementById('context_menu');
// 노출 초기화
ctxMenu.style.display = 'none';
ctxMenu.style.top = null;
ctxMenu.style.left = null;
}
// 드래그 했을 때 이벤트 리스너
document.addEventListener("drag", function(event) {
console.log("이동 중");
}, false);
// 블럭지정 했을 때 이벤트 리스너
document.addEventListener('selectionchange', () => {
console.log(document.getSelection().toString());
});
[JavaScript Code] Code Enter 이벤트 (0) | 2022.05.22 |
---|---|
[JavaScript Code] 배열 shuffle (0) | 2022.05.22 |
[JavaScript Code] 스피너 로딩화면 (0) | 2022.04.23 |
[JavaScript Code] function 선언 방법 (document.ready(), window.onload) (0) | 2022.03.19 |
[JavaScript Code] 파일 업로드 (0) | 2022.03.11 |
<!-- 내부 JS 지정 -->
<script>
/*
[JS 요약 설명]
1. window.onload : 브라우저 로드 완료 상태를 나타냅니다
2. spin js : 브라우저 내에서 로딩 스핀 상태를 나타낼 수 있습니다
3. 로직 : 사용자 통신 요청 시 >> spinnerStart 호출 >> 리턴 응답 받을 시 >> spinnerStop 호출
4. 옵션 참고 공식 사이트 : https://spin.js.org/
*/
/* [html 최초 로드 및 이벤트 상시 대기 실시] */
window.onload = function() {
console.log("");
console.log("[window onload] : [start]");
console.log("");
// 로딩 스피너 호출
spinnerStart();
/* setTimeout 호출 : 일정 시간 후 실행 : [함수호출] 일회용 */
setTimeout(spinnerStop, 3000); //5초후에 spinnerStop() 함수 호출
};
/* [spinnerStart 시작 이벤트 호출] */
function spinnerStart(){
console.log("");
console.log("[spinnerStart] : " + "[start]");
console.log("");
// [로딩 부모 컨테이너 동적 생성] 회색화면
var createLayDiv = document.createElement("div");
// 설정
createLayDiv.setAttribute("id", "spinnerLay1000");
var createLayDivStyle = "width:100%; height:100%; margin:0 auto; padding:0; border:none;";
createLayDivStyle = createLayDivStyle + " float:top; position:fixed; top:0%; z-index:1000;";
createLayDivStyle = createLayDivStyle + " background-color:rgba(0, 0, 0, 0.3);"; // 불투명도 설정 >> 자식에게 적용 안됨
createLayDiv.setAttribute("style", createLayDivStyle);
document.body.appendChild(createLayDiv); //body에 추가 실시
// [실제 스핀 수행 컨테이너 동적 생성] 스피너
var createSpinDiv = document.createElement("div");
//설정
createSpinDiv.setAttribute("id", "spinnerContainer1000");
var createSpinDivStyle = "width:100px; height:100px; margin:0 auto; padding:0; border:none;"; // 스핀 컨테이너 크기 조절
createSpinDivStyle = createSpinDivStyle + " float:top; position:relative; top:40%;";
//createSpinDivStyle = createSpinDivStyle + " background-color:#ff0000;";
createSpinDiv.setAttribute("style", createSpinDivStyle);
document.getElementById("spinnerLay1000").appendChild(createSpinDiv); //spinnerLay에 추가 실시
// [스핀 옵션 지정 실시]
var opts = {
lines: 10, // 그릴 선의 수 [20=원형 / 10=막대] [The number of lines to draw]
length: 10, // 각 줄의 길이 [0=원형 / 10=막대] [The length of each line]
width: 15, // 선 두께 [The line thickness]
radius: 42, // 내부 원의 반지름 [The radius of the inner circle]
scale: 0.85, // 스피너의 전체 크기 지정 [Scales overall size of the spinner]
corners: 1, // 모서리 라운드 [Corner roundness (0..1)]
color: '#003399', // 로딩 CSS 색상 [CSS color or array of colors]
fadeColor: 'transparent', // 로딩 CSS 색상 [CSS color or array of colors]
opacity: 0.05, // 선 불투명도 [Opacity of the lines]
rotate: 0, // 회전 오프셋 각도 [The rotation offset]
direction: 1, // 회전 방향 시계 방향, 반시계 방향 [1: clockwise, -1: counterclockwise]
speed: 1, // 회전 속도 [Rounds per second]
trail: 74, // 꼬리 잔광 비율 [Afterglow percentage]
fps: 20, // 초당 프레임 수 [Frames per second when using setTimeout() as a fallback in IE 9]
zIndex: 2e9 // 인덱스 설정 [The z-index (defaults to 2000000000)]
};
// [스피너 매핑 및 실행 시작]
var target = document.getElementById("spinnerContainer1000");
var spinner = new Spinner(opts).spin(target);
};
/* [spinnerStop 중지 이벤트 호출] */
function spinnerStop(){
console.log("");
console.log("[spinnerStop] : " + "[start]");
console.log("");
try {
// [로딩 부모 컨테이너 삭제 실시]
var tagId = document.getElementById("spinnerLay1000");
document.body.removeChild(tagId); //body에서 삭제 실시
}
catch (exception) {
// console.error("catch : " + "not find spinnerLay1000");
}
};
</script>
[JavaScript Code] 배열 shuffle (0) | 2022.05.22 |
---|---|
[JavaScript Code] context menu(우클릭), 클립보드(Clip Board), 드래그(Drag), 블럭지정 이벤트 (0) | 2022.04.23 |
[JavaScript Code] function 선언 방법 (document.ready(), window.onload) (0) | 2022.03.19 |
[JavaScript Code] 파일 업로드 (0) | 2022.03.11 |
[JavaScript Code] 유효성체크 (한글, 숫자, 문자, 특수문자, 공백) (0) | 2022.03.06 |
1. (JQuery)
$(function(){ // 웹브라우저 내의 모든 요소가 준비가 되어야 실행
// 실행할 기능을 정의해주세요.
});
2. (JQuery)
$.fn.메소드명 = function (인자명) {
//내용
}
3.
자바스크립트 (Javascript)
function 메소드명 (인자값...){
}
4. (1과 4는 등치) (JQuery)
$(document).ready(function(){ // 웹브라우저 내의 모든 요소가 준비가 되어야 실행
....
});
// 웹브라우저 내의 모든 요소가 준비가 되어야 실행 (Javascript)
5. window.onload = function(){
....
}
[JavaScript Code] context menu(우클릭), 클립보드(Clip Board), 드래그(Drag), 블럭지정 이벤트 (0) | 2022.04.23 |
---|---|
[JavaScript Code] 스피너 로딩화면 (0) | 2022.04.23 |
[JavaScript Code] 파일 업로드 (0) | 2022.03.11 |
[JavaScript Code] 유효성체크 (한글, 숫자, 문자, 특수문자, 공백) (0) | 2022.03.06 |
[JavaScript Code] 예 아니오 Alert 기능 (0) | 2022.03.06 |
$(function() {
$("#dump_inc_delete_btn").on("click", function() {
var checked = [];
$("input[name='inc_no']:checked").each(function(i) {
checked.push($(this).val());
});
$.ajax({
type: "GET",
url: "deleteIncDump",
data: {
No: checked
},
success: function(data) {
makeDumpTableAndPagination(currentDumpPageNumStorage);
}
}); // ajax 종료
})
})
@RequestMapping(value = "/deleteIncDump", method = RequestMethod.GET)
public void deleteIncDump(@RequestParam(value="No[]") ArrayList dumpParams,
HttpServletRequest request, HttpServletResponse response,
HttpSession session) throws IOException, JSchException {
ArrayList<String> dumpNames = new ArrayList<String>();
dumpNames = dumpParams;
Dump dump = new Dump();
String dumpPath = linuxRootPath + "dump/data/inc/";
dump.deleteBulk(dumpNames, dumpPath);
}
체크된 inc_no 체크박스를 파악해 배열에 담아 ajax로 보냅니다. 받을 때는 ArrayList로 받아야합니다. (키[] 이렇게 값을 받아야 한다.)
[jQuery Code] 제이쿼리 datepicker 달력 구현 (시작일자 ~ 종료일자) (0) | 2022.09.12 |
---|---|
[jQuery Code] 제이쿼리 Ajax 기본 사용법 (0) | 2022.02.13 |
[jQuery Code] 제이쿼리 click, hover, on (이벤트 리스너, 다중 이벤트 리스너) (0) | 2021.07.01 |
[jQuery Code] 제이쿼리 애니메이션(Animation) 효과 주기 (animate) (0) | 2021.07.01 |
[jQuery Code] 제이쿼리 동적으로 클래스(CLASS), 속성, CSS, 태그, 텍스트 추가, 삭제 및 읽기 (addClass, removeClass, attr, removeAttr, css, html, text) (0) | 2021.06.30 |