[JS]문서 객체 모델안의 form태그, 페이지이동방식(get과 post), focus() vs blur() vs select()
form 태그
폼태그안에 있는 정보를 저장해서 원하는 페이지로 전달하는 방법을 설정할 수 있다.
원하는 페이지는 action=”” 여기에 적어준다
action페이지로 정보를 전달할때는 주소줄의 ?뒤에 전달할 정보를 담아서 이동한다.
폼태그안에 있는 정보를 저장해서 원하는 페이지로 전달하는 방법을 설정할 수 있다.
원하는 페이지는 action=”” 여기에 적어준다
action페이지로 정보를 전달할때는 주소줄의 ?뒤에 전달할 정보를 담아서 이동한다.
브라우저의 url(주소창)에 대한 정보를 가지고 있는 객체
location.href : 페이지이동. 현재브라우저의 주소창의 정보url를 리턴
1 | location.href="Test2.html" |
location.protocol : 프로토콜은 통신규약이다 어떤 방식으로 어떤 속도로 해당 통신을 할껀지 약속.
location.hostname
location.host
location.reload(); 페이지새로고침(F5번과 동일한 기능)
location.replace(url); 입력한 url로 페이지 이동
1 | <input type="button" value="location속성" onclick="fun1()"> |
해당 html문서를 객체로 표시한 것(객체화)이 여기서 말하는 document이다.
위를 활용하여 체크박스를 틱하고 틱을 해제함으로써 배경색과 글자색이 바뀌는 함수를 만들어보자.
1 | <input type="checkbox" onclick="checkf1(this);"> 체크박스 온오프로 핑크테마<br> |
img태그에 접속하여 속성을 이용해보자
document.images[0].name : 이미지태그 네임을 모를 경우 인덱스활용해서 name불러옥;
document.img1.name : 이미지태그 네임을 알경우 name불러오기
document.img1.src : 이미지태그 네임을 알경우
먼저 이미지태그를 만들어보자
1 | <img src="1.jpg" name="img1"> |
그리고 이 이미지태그의 속성을 알아보자
위에서 만든 버튼태그를 눌릴때마다 속성을 알아보는 방법이다.
1 | function fun1(){ |
1부터 6까지 총 6개의 이미지를 랜덤하게 가져와서 이미지태그에 보더, 가로,세로 크기를 변경하는 함수를 만들어 보자
첫번째는 랜덤함수를 이용하는 방법이다
1 | <img src="1.jpg" name="img1" onmouseover="changeImg()" onmouseout="resetImg()"><br> |
두번째 방법은 배열이용하는 방법이다
전자보다 더 많이 사용한다
위와의 차이점은 두가지이다.
1 | <img src="1.jpg" name="img1" onmouseover="changeImg()" onmouseout="resetImg()"><br> |
문자열객체는 배열처럼 데이터를 저장한다.
1 | let name = new String("Hong") //문자열객체 |
둘 다 문자열객체로 사용할수있다.
문자열객체는 두가지타입의 function을 가지고있다.
스타일을 지정하는 타입의 함수와 데이터를 처리하는 타입의 함수이다.
폰트를 굵게 표시한다.
하지만 스타일을 지정하는 함수는 실제론 거의 사용하지않는다.
실무에선 스타일은 css로 지정한다
그렇지만 굳이 css를 쓰지않더라도 이렇게 스타일을 지정할 수있다는 사실을 알고있어야한다.
참고로 toUpperCase()와 toLowerCase()는 사용할 수 도 있다
1 | document.write("name : " + name.bold()); //굵게 출력 |
체이닝기법
함수를 연결하여 한번에 사용하는 형태이다.
1 | document.write(msg.fontcolor("red").fontsize("15").bold()) |
위의 코드를 통해 msg의 글씨색깔은 빨간색이며 폰트사이즈는 15이고 굵게 출력된다.
아래 함수들(2번부터 ) 모두가 데이터를 처리하는 함수이다.
길이를 구하는 함수이다
substring(시작인덱스,끝인덱스)는 시작부터 끝 인덱스 앞자리까지 짤라온다.
substring(인덱스) 이처럼 인덱스를 하나만 적는 경우에는 시작인덱스로 취급하여 시작인덱스부터 끝까지 다 짤라온다.
1 | let name3 = "이번년도는 복세편살!" |
이것과 비슷한 함수로는 아래 세 가지가 있다.
slice(시작,끝) : 시작인덱스부터 끝인덱스의 앞자리까지 짤라오는 함수
substr(시작인덱스,갯수) : 시작인덱스부터 갯수만큼 짤라오는 함수
.charAt(인덱스) : 해당 인덱스에 있는 문자데이터를 가져온다.
1 | let name3 = "이번년도는 복세편살!" |
짤라오는 함수를 이용하여 주민번호로 성별을 구분하는 코드를 작성해보자총 4가지 방법의 함수
로 짤라올수가 있다!
1 | let num = prompt("주민번호를 -와 함께 입력하세요") |
위에서 배운 함수로 출력이 가능하나 마지막방법인 charAt는 1자리만 가져오는 것이기때문에 불가능하다.
따라서 3가지 방법으로 코드를 작성할 수 있다.
1 | let phonenum = prompt("전화번호를 -와 함께 입력하세요") |
String안에 내가 원하는 값이 있는지 찾아보는 방법으로 indexOf()를 사용한다.
indexOf()의 괄호안에는 찾고싶은 요소를 입력한다
해당 요소가 있는 경우에는 왼쪽에서 시작해서 제일 먼저 만나는 index의 위치를 알려주고
해당 요소가 없는 경우에는 -1
이 출력된다.
1 | let name3 = "이번년도는 복세편살이야" |
현재 name3안에는 “이”가 2개가 있지만 첫번째 “이”의 index위치를 알려주고 있다.
중복되는 데이터의 첫번째 index 위치만 알려주기때문에 중복데이터가 있으면 그 위치가 어디인지 찾기가 어렵다.
그럴때 사용하는 함수가 아래에 있는 .lastIndexOf()이다.
String안에 내가 원하는 값이 있는지 찾아보는 방법으로 lastIndexOf()를 사용한다.
lastIndexOf()의 괄호안에는 찾고싶은 요소를 입력한다
해당 요소가 있는 경우에는 오른쪽에서 시작해서 제일 먼저 만나는 index의 위치를 알려주고
해당 요소가 없는 경우에는 -1
이 출력된다.
1 | let name3 = "이번년도는 복세편살이야" |
괄호에 추가하고싶은 데이터를 작성하여, 데이터를 추가하는 방법에는 아래처럼 두가지가 있다.
1 | let name3 = "이번년도도는 복세편살이야" |
괄호안의 값을 기준으로 문자를 파싱(나누기)후 배열에 저장한다.
1 | let name3 = "이번년도도는 복세편살이야" |
userEmail.indexOf(“@”) >= 0)에서
0대신에 다른 숫자를 넣으면 해당 숫자에 따라 최소 ID의 자리수가 달라지는 로직을 만들수있다.
userEmail.indexOf(“@”) >= 8)인경우 8자리이상 ID만 true가 된다.
이런 로직을 잘 짜야지 좋은 개발자가 될 수 있다.
1 | function check(userEmail){ |
브라우저에서 사용자가 취하는 모든 행동을 이벤트라고 한다
이벤트 :
- 브라우저에서 사용자가 취하는 모든 행동
- ex)button
이벤트리스너 :
- 이벤트 발생정보를 체크해서 해당 핸들러로 전달
- ex) onclick
이벤트핸들러 :
- 이벤트 발생시 특정 동작을 처리해주는 동작
- 자바스크립트 함수를 실행시켜서 작동한다 즉, js함수실행가능
- 태그의 스타일정보 변경가능
- ex) alert(‘버튼클릭’), open() 등등
보통을 keydown해서 keyup을 해야 즉, 키보드를 눌렀다가 떼면 데이터가 입력된다.
따라서 키이벤트를 처리할때는 keyup일때 이벤트를 걸어줘야 keydown일때보다 정확한 처리가 가능하다
1 | <input type="button" value="버튼" onclick="alert('버튼클릭');"><br> |
참고링크 : onmouseleave와 onmouseout의 차이점
우리가 사용하는 인터넷브라우저안에 내장되어있는/포함되어있는 객체를 말한다.
특징
정확한 구조를 표현한 문장인 window.document.write() 사용해야하지만 최상위 객체는 생략해서 document.write()로 사용한다.
브라우저 객체이 최상위 객체.
객체이기때문에 당연히 속성과 함수들을 가지고 있다.
window.open(“url주소 “, “창이름(title태그와 동일한 기능)”, “옵션”); 새창열기
window.location.href=’url주소’; 현재페이지에서 열기
window.close(); 현재 창 닫기
window.alert(); 알림 팝업창 열기
window.confirm() : 팝업창을 열어서 확인/취소 버튼으로 Boolean 데이터를 받는 함수
window.prompt(); 팝업으로 input창 열기
window.setInterval(“자바스크립트실행문”,밀리초시간); 일정시간동안에 자바스크립트실행문을 실행하는 함수
window는 최상위객체이기때문에 window를 생략하고 사용할 수 있다.
1 | <input type="button" value="새창열기" onclick="window.open('http://www.naver.com')"> |
이렇게 input태그에 많은 내용이 들어가면 보안상의 위험이 있으므로 js에 넣어서 사용한다.
참고로 아래 코드에서 점점(..)은 상위폴더로 이동을 의미한다.
1 | function winOpen(){ |
3초에 한번씩 숫자를 찍는 함수를 아래코드와 같이 만들수있다.
java에서 스래드와 비슷한 개념이다.
1 | let i=0; |
내장객체 중에서 가장 활용도가 높은 것은 배열객체이다.
연속된 공간에 여러개의 데이터를 저장하는 객체이다.
배열에 들어있는 데이터를 요소(Element)라고 부른다.
배열의 index는 0부터 시작한다. 그리고 마지막 index는 (배열의 크기 - 1)이다.
배열의 요소는 변수처럼 사용가능 -> 주로 반복문에 활용해서 사용한다.
JS의 경우 모든 데이터타입을 한 배열안에 넣기 가능하다.
1 | let arr = [1,2,"Hello", true, 3]; |
변수의 값을 0부터 배열 객체의 개수만큼 반복하는 구문.
자동적으로 배열 객체의 길이를 계산한다.
1 | for(let i in arr){ |
요소들을 출력할 때 사이에 입력하여 출력하는 방법은 join()을 쓰면 쉽게 해결된다
1 | document.write(arr.join(" ")) |
위의 출력값과 아래의 출력값의 차이는 딱 하나이다.
마지막 요소에 스페이스의 입력유무이다.
join()의 경우 마지막요소에 입력되지 않으니 더욱 유용하다
1 | document.write(arr.join(",")) |
배열안의 요소를 역순으로 출력하고 싶다면 반복문을 먼저 생각해볼수있다.
반복문을 이용하면 임시값에 뒷요소부터 넣어서 반복할 수 있다.
하지만 array에 좋은 내장함수가 있다.
바로 reverse()이다
reverse()는 배열의 순서를 반대로 처리한다.
1 | arr1 = [1,2,"hi", "a", "A", "가", "나"]; |
기본적으로 콤마(,)가 함께 출력된다.
이 콤마를 없애고 싶다면 reverse후에 join을 하면 된다
1 | document.write(arr1.reverse().join(" ")) |
낮은 순자부터 높은 숫자로 오름차순으로 출력한다.
1 | arr2 = [1,2,"hi", "a", "A", "가", "나"]; |
Date 객체의 특징
1 | //참고로 today는 2020년 6월 12일이다. |
변수에 저장한 date객체를 가져와서 사용해보자
요일출력하는 getDay()의 경우 0(일)부터 6(토)까지를 나타낸다.
1 | //참고로 today는 2020년 6월 12일이다. |
숫자로 들어온 요일을 글자로는 어떻게 바꿀수있을까?
여러가지 방법이 있다
1 | let today = new Date(); |
1 | function getToDay(day) { |
Date()객체를 활용하여 디데이를 계산한느 함수를 구해보자
Date()객체에서는 사칙연산이 적용되는데 단위가 밀리초로 출력된다
1 | function calculator(year, month, day){ |