본문 바로가기

JavaScript228

[javaScript] contenteditable 속성으로 row 수정,저장하기. 안녕하세요. 이전 포스트에 이어 오늘은 contenteditable 속성을 js로 동적 처리하여 테이블 내에서 수정,삭제할 수 있는 기능을 구현해보겠습니다. contenteditable에 대한 내용은 이전 포스트 참고바랍니다. UI는 이전 포스트와 큰 차이가 없지만, 옵션란이 생겼습니다. css에 font awesome 링크를 import 하여 아이콘들을 사용해 저장,수정,삭제를 나타내보도록 하겠습니다. class를 편집하는 내용은 이 포스트 참고 바랍니다. 아래는 전체 코드입니다. c.html 이름 나이 직업 옵션 김뫄뫄 25 학생 수정 삭제 박뫄뫄 30 사무직 수정 삭제 이뫄뫄 21 학생 수정 삭제 c.css /*fontawesome 아이콘 css 삽입*/ @import url('https://cdn.. 2023. 7. 9.
[JavaScript] C3.js를 활용하여 차트 그리기 안녕하세요. 이번 시간에는 C3.js라는 라이브러리를 활용해서 간단하게 차트를 그리는 방법에 대해 알아보겠습니다. 우선 C3.js 사용을 위해 head에 다음과 같은 CDN 코드를 추가해주세요. 아래의 예제는 일주일간의 최저기온과 최고기온을 꺾은선을 통해 표시하는 차트를 그린 코드입니다. 결과 이미지입니다. 그림처럼 차트에 특정 위치에 마우스 커서를 갖다댈 경우 해당 데이터에 대한 정보가 표시됩니다. 꺾은선 외에도 다양한 모양의 차트를 지원하며 아래와 같이 서로 다른 모양의 두개 이상의 차트를 한번에 표시할 수도 있습니다. 위의 예제에서는 평균 기온을 추가한 뒤 평균 기온의 경우 bar 형태로 표시되게 처리하였습니다. 위 코드에서 보다시피 data의 types 에서 원하는 모양의 차트를 설정해 줄 수 있.. 2023. 6. 29.
[Javascript] target 속성과 closest() 함수를 조합하여 ui 선택하기 안녕하세요. 이번 시간에는 자바스크립트의 target 속성과 closest() 함수를 사용하여 동적으로 추가된 ui를 선택하는 방법을 알아보겠습니다. Event 인터페이스의 target 속성은 이벤트가 발생한 대상 객체를 가리키며, closest() 함수는 현재 element에서 가장 가까운 조상을 반환합니다. 두 가지에 대한 좀 더 자세한 내용은 링크를 참조해 주세요. target : https://developer.mozilla.org/ko/docs/Web/API/Event/target Event.target - Web API | MDN Event 인터페이스의 target 속성은 이벤트가 발생한 대상 객체를 가리킵니다. 버블링과 캡처링 단계에서는 Event.currentTarget (en-US)과 다.. 2023. 6. 14.
[javascript] keyup 사용하여 테이블 검색 기능 만들기 안녕하세요 오늘은 자바스크립트의 'keyup' 을 사용해서 테이블 row들을 탐색하는 검색 기능을 만들어보겠습니다. info.html 검색 이름 국적 소속 성적 담당자 안나 독일 B반 B+ 윤OO 다케시 일본 B반 B- 윤OO 셰인 아일랜드 A반 A+ 김OO 강샤오 중국 C반 A- 박OO 애슐리 미국 B반 B+ 김OO 쳔동 대만 C반 C+ 박OO 다케시 일본 C반 A- 한OO 유코 일본 D반 C+ 한OO info.css /* 전체 테이블 스타일 */ table { width: 70%; margin: auto; /* 뷰포트 중앙에 위치 */ border-collapse: collapse; text-align: center; /* 텍스트 중앙 정렬 */ } /* 테이블 헤더 스타일 */ thead { bac.. 2023. 6. 9.
[Javascript] BroadcastChannel 를 사용해서 탭 간 메세지 주고받기 BroadcastChannel 란? 같은 브라우저의 다른 windows, tabs, frames or iframes(in different windows, tabs, frames or iframes) 간의 통신을 할 때 사용하는 클래스입니다. BroadcastChannel를 사용해서 탭 간 메세지를 주고받는 예제입니다! postMessage() 를 사용해서 다른 탭의 BroadcastChannel 에 메세지를 전송하고, onmessage event를 통해 다른 탭이 전송한 메세지를 받을 수 있습니다. 실행결과입니다. 전체 코드입니다. Message Send 아래의 페이지를 참고해보시면 좋을 것 같습니다. https://developer.mozilla.org/en-US/docs/Web/API/Broadca.. 2023. 6. 7.
[Javascript] 내 음성을 raw pcm data format 음원에 저장하기. raw pcm data format 음원이란? header가 없이 raw data만 저장한 파일입니다. 따라서 pcm 포맷으로 저장된 오디오는 별도로 오디오에 대한 정보( sampling rate, bit size, endian, channels )를 가지고 있지 않으면 제대로 play할 수 없습니다. 저는 sampling rate, bit size, endian, channels 을 16kHz Sampling rate, 16 bit short-int, little-endian, mono 로 설정했지만 변수값을 바꾸면 다른 값으로도 변경 가능합니다! 실행결과입니다. 음원을 생성한 뒤 ETRI 서버에게 STT를 요청해서, 생성한 음원을 텍스트로 출력해봤습니다. 위의 영상에서 만든 음원입니다! STT 예제는.. 2023. 5. 26.
[Javascript] 자바스크립트를 활용해서 get/post로 데이터 전달하기 안녕하세요 이번 시간에는 자바스크립트 코드를 활용해서 get/post 방식으로 데이터를 보내는 방법을 알아보려 합니다. 보통은 아래와 같이 html 안에서 form 태그 안에 input 태그를 넣어서 전송하는 방법이 주로 쓰이는데요. 회원가입 아이디: 비밀번호: 같은 방식을 자바스크립트 코드를 통해서도 전송할 수 있습니다. 이렇게 구현할 경우 데이터를 보내는 기능을 함수화하여 재사용성을 높일 수도 있고, 클릭한 ui에 따라 데이터를 다르게 전송할 수도 있습니다. 특히 서버에서 받아온 데이터를 활용하여 자바스크립트로 동적인 ui를 표시하고, 이 각각의 ui를 클릭하거나 할 때 별개의 get/post 이벤트를 넣고 싶은 경우 유용하게 활용될 수 있습니다. 예를 들어 서버에서 아래와 같은 데이터를 받아서 자바.. 2023. 5. 25.
[JavaScript] 정규식을 활용하여 이메일 로그인 시 예외처리하기 안녕하세요. 웹페이지에서 로그인/회원가입 시 대부분의 서비스들은 글자의 종류와 길이에 대한 제한을 두고 유저가 입력을 할 때마다 실시간으로 입력 조건을 만족시켰는지 표시해주는데요. 이번 시간에는 정규식을 활용한 예외 처리를 통해 이메일과 비밀번호로 로그인을 할 때 응용 할 수 있는 기능을 구현하려 합니다. 우선 다음과 같이 html 태그들을 먼저 작성하였습니다. 이메일 유효한 이메일 주소를 입력하세요. 비밀번호 8~15자 이내로 입력하세요. 로그인 이메일과 비밀번호 입력창에는 키보드를 눌렀다가 뗐을 때 발생하는 이벤트인 onkeyup시에 각각 printEmail, printPw라는 자바스크립트 함수가 작동하도록 처리함으로써 유저가 입력을 감지하고, 이에 따라 로직이 작동하도록 처리하였습니다. 두 함수에 .. 2023. 5. 8.
[JavaScript] 내 화면 녹화 및 다운로드하기 오늘은 내 화면을 녹화하고 다운로드 하는 예제를 가져왔습니다! navigator.mediaDevices.getDisplayMedia()로 내 화면과 연결된 MediaStream을 가져오고, MediaRecorder의 start(), stop(), ondataavailable event, stop event 를 사용해서 내 화면을 녹화하고 window.URL.createObjectURL() 로 녹화 데이터를 나타내는 url 생성한 뒤 a element 로 해당 url 이 나타내는 데이터를 다운로드 합니다. 먼저 실행 결과입니다. 전체 코드입니다. record.html Start Sharing Start 기록 Stop Recording and Download record.js 'use strict'; /* .. 2023. 5. 4.