Javascript 문제해결 과정
1. Javascript 기본 개념 공부
① 인터넷으로 Javascript 강의 듣기, 구글링하기.
② 다른 사람이 만든 코드를 가져와서 사용하고 해석해보기.
③ chatGPT 선생님의 도움.
2. 프로그래밍 = 문제해결 과정. 어떤 문제를 해결해야 했나?
① 댕근마켓에 무한스크롤 기능이 필요하다. (고객이 페이지 넘길 필요 없이 데이터를 볼 수 있음. 편리함)
② 댕댕등록증 이미지 미리보기하는 기능이 필요하다.
③ 출력하기 버튼을 누르면 웹페이지 전체가 출력된다. 댕댕등록증만 캡쳐하고 싶다.
댕근마켓 무한스크롤 javascript 코드
window.onscroll = function () {
if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
const toAdd = document.createElement("div");
const box = document.getElementsByClassName('container');
const clonedBox = box[0].cloneNode(true); // container 클래스를 가진 첫번째 요소를 복제
toAdd.appendChild(clonedBox); // div 영역에 넣어주기
document.querySelector('article').appendChild(toAdd);
}
}
코드 설명 : 이 코드는 윈도우에서 스크롤 이벤트가 발생하면, 현재 보이는 화면 영역의 높이와 스크롤 위치를 합한 값이 문서 전체의 높이와 같거나 크면, 새로운 div엘리먼트를 만들고 그 안에 현재 페이지의 첫 번째 card 엘리먼트를 복사하여 추가합니다. 결과적으로 페이지 하단에 스크롤을 내릴 떄마다 새로운 card 엘리먼트를 추가합니다. 지금은 데이터가 없어서 container가 반복되게 해둔 상태입니다.
댕사무소 댕댕등록증 이미지 미리보기 javascript 코드
// 댕댕등록증 이미지 미리보기
function previewImage(input) {
var image = document.getElementById('preview')
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
image.src = e.target.result;
};
reader.readAsDataURL(input.files[0]);
image.style.width = '217px';
image.style.height = 'auto';
} else {
document.getElementById('preview').src = "";
}
}
코드 설명 : 이 코드는 파일을 선택하면 해당 이미지 파일을 미리보기합니다. input 태그를 인자로 받고 선택된 파일이 존재하는지 확인합니다. 있다면 reader 객체를 생성합니다. reader 객체는 선택한 파일을 읽을 수 있는 객체입니다. 파일을 문자열 형태로 변환시키고, 이를 다시 이미지 태그의 src속성에 할당하면 해당 이미지 파일이 미리보기 됩니다.
<img id="preview" src="" alt="preview image"> src 속성에 이미지 파일의 문자열을 넣으면 이미지가 나타납니다.
댕사무소 댕댕등록증 출력하기 javascript 코드
// html2canvas.min.js 파일 로드
let script = document.createElement('script');
script.src = './html2canvas.js';
script.onload = function() {
document.querySelector('form').addEventListener('submit', function(event) {
event.preventDefault(); // 폼 제출 이벤트 중단
downImg(); // downImg 함수 호출
});
};
document.head.appendChild(script);
function downImg() {
// 사용자 입력 값
let result1 = document.querySelector("#견종값");
let result2 = document.querySelector("#등록번호값");
let result3 = document.querySelector("#이름값");
let result4 = document.querySelector("#생일값");
let result5 = document.querySelector("#수컷값");
let result6 = document.querySelector("#암컷값");
let result7 = document.querySelector("#중성화함값");
let result8 = document.querySelector("#중성화안함값");
let result9 = document.querySelector("#주소값");
let result10 = document.querySelector("#특징값");
let 견종 = document.getElementById("견종").value
let 등록번호 = document.getElementById("등록번호").value;
let 이름 = document.getElementById("이름").value;
let 생일 = document.getElementById("생일").value;
let 수컷 = document.getElementById("수컷").checked ? "수컷<br/>" : "";
let 암컷 = document.getElementById("암컷").checked ? "암컷<br/>" : "";
let 중성화함 = document.getElementById("중성화함").checked ? "O<br/>" : "";
let 중성화안함 = document.getElementById("중성화안함").checked ? "X<br/>" : "";
let 주소 = document.getElementById("주소").value;
let 특징 = document.getElementById("특징").value;
result1.textContent = 견종;
result2.textContent = 등록번호;
result3.textContent = 이름;
result4.textContent = 생일;
result5.innerHTML = 수컷;
result6.innerHTML = 암컷;
result7.innerHTML = 중성화함;
result8.innerHTML = 중성화안함;
result9.textContent = 주소;
result10.textContent = 특징;
document.querySelector("#imagediv").style.borderWidth = "0px";
document.getElementById("imageinput").remove();
document.getElementById("견종").replaceWith(result1);
document.getElementById("등록번호").replaceWith(result2);
document.getElementById("이름").replaceWith(result3);
document.getElementById("생일").replaceWith(result4);
document.getElementById("주소").replaceWith(result9);
document.getElementById("특징").replaceWith(result10);
// 선택된 값이 선택창 자리에 들어감
if (수컷) {
document.getElementById("성별").replaceWith(result5);
} else {
document.getElementById("성별").replaceWith(result6);
}
if (중성화함) {
document.getElementById("중성화여부").replaceWith(result7);
} else {
document.getElementById("중성화여부").replaceWith(result8);
}
if (!견종 || !등록번호 || !이름 || !생일 || !주소) {
return;
}
// 입력값이 모두 입력되었을 때 html2canvas 함수와 downloadURI 함수 호출
html2canvas($(".idcard")[0]).then(function(canvas){
var 댕댕등록증 = canvas.toDataURL();
downloadURI(댕댕등록증, "댕댕등록증.png");
});
}
// png 파일을 image uri로 변환
function downloadURI(uri, name) {
var link = document.createElement("a");
link.download = name;
link.href = uri;
document.body.appendChild(link);
link.click();
}
document.querySelector('#').addEventListener('submit', function(event) {
event.preventDefault(); // 폼 제출 이벤트 중단
downImg(); // downImg 함수 호출
});
코드 설명 : HTML2Canvas 라이브러리를 사용해서 폼을 이미지로 변환하고 다운로드하는 코드입니다. script 태그를 생성하고 script.src에 라이브러리 파일 경로를 할당합니다. 그 다음 script.onload에 라이브러리 파일이 로드된 후 실행될 함수를 넣어줍니다. html 파일에서 첫번째 폼 요소를 선택하고 submit이 될때마다 function(event)를 실행합니다. function(event)는 downImg()함수를 호출합니다. downImg함수는 input에 입력된 값을 span태그에 넣어줍니다.
'코딩 학원(국비지원) > 코딩 팀프로젝트' 카테고리의 다른 글
팀프로젝트 게시판을 만들어보자. (0) | 2023.05.04 |
---|---|
javascript 토글(toggle) 기능 추가 (0) | 2023.04.25 |
코딩 팀 프로젝트 회의 (0) | 2023.03.21 |
새로운 조에서 코딩 팀프로젝트 (0) | 2023.03.20 |
코딩 팀프로젝트 팀 해제 (0) | 2023.03.19 |