본문 바로가기
Markdowns

BOM

by Echinacea 2021. 7. 1.
반응형

BOM

history.go()

앞으로

history.go(-1)

뒤로

Onload

사용

<body onload="">

window.onload

innerHTML - 태그까지 전부 추출해줌

Window onload

중요함!! 실수하는 사람 많대!!

  • 굳이 함수안에 있을 필요 없음. 함수 밖에 있어도 됨

innertext - > 문자열로 인식

-> html태그로 인식시킴

  • 특정태그의값을 추출하고싶을때

on- 으로 시작하는건 다 이벤트

이벤트 버블링 - 이벤트 시작하면 부모 따라가며 같은 클릭이벤트들이 자동으로 호출됨.

ex) span태그 클릭하면 div태그, h1태그 다 순서대로 진행됨

이벤트 캡처링 - 반대로 부모 > 자식 순으로 클릭이벤트가 자동으로 호출됨

그래서 이벤트 버블링을 강제적으로 막아줘야 함

버블링 강제로 막는법

e.cancelBubble = true

이벤트 추가

addEventListener()

이벤트 삭제

removeEventListener()

form tag 어떻게 사용하는지 배움

폼태그 목적 : 사용자 정보를 서버에 보냄

  • 서버가 html태그들을 클라이언트에 전달해줌
  • 클라이언트가 서버에 요청할 때 자신이 가진 임의의 값들을 서버쪽에 전달하기 위한 수단 : 폼태그
  • 이때 요청하는게 필요함. 그 요청과 관련된 속성이 'action'임
<form action="exam08.html">
> 의 뜻 : exam08.html을 서버에 요청

그러면 submit 누르는 순간 요청한 결과가 화면에 출력됨

전달할 때 쓰는 키워드 : ?

?를 쓰면 클라이언트가 서버에 뭔가 전달하겠다는 뜻을 가짐

그런데 전달하려는 데이터가 하나가 아닌 두 개 이상일 때, 서버 입장에선 어떤게 id, pw인지 모르기 때문에 'name'이라는 속성을 반드시 이용해야 함

name속성은 value값을 받기 때문!!

활용예시

아이디 : <input type="text" name="id"><br>

전달되는 내용 - url을 통해 확인할 수 있음

exam08.html?id=aaa&pwd=123&pwdCheck=123

*& : 구분자. queryString이라고 부름

&name=value <의 form을 가짐

하지만 클라이언트-서버간 요청 횟수를 최대한 줄이는 게 좋음(io를 많이 사용하면 속도가 저하됨)

디폴트로는 tcp형태고, 동기화형태임(한번 응답 오기 전까지 아무것도 못함)

클라이언트-서버의 응답-요청을 1회로 줄이는 게 관건

이런 요청-응답을 줄이기 위한 동적 체크를 하는게 자바스크립트임

데이터를 필수 입력하라고하는속성은 정적인 required로도 충분

like this

아이디 : <input type="text" name="id" required><br>

onsubmit : submit했다는 걸 알리는 이벤트

형태

<form action="exam08.html" onsubmit="return true">
> 서버에 제출됨
<form action="exam08.html" onsubmit="return false">
> 서버에 제출되지 않음
<form action="exam08.html" onsubmit="return whenSubmit()">
> 아예 함수를 호출할 수도 있음 - 이땐 whenSubmit() 이라는 함수를 function whenSubmit() {} 의 형태로 따로 만들어주어야 함
function whenSubmit() {
    return false
}
--------------------------------------
> 이러면 위에서 whenSubmit() 함수 호출해도 return값이 false라 제출 안됨


이것의 쓰임은
-----------------------
if(id.value == "") {
    alert('아이디를 입력하세요')
    return false
}
-------------------------------------
이와 같이 id의 value값이 비었을 때 다시 돌려보내는 역할을 할 수 있음

form태그만 유일하게 name속성에 접근 가능

console> document.inputForm.id

로 접근 가능하다는 뜻!

name이 id인 것의 value값 추출하는 방법

> document.inputForm.id.value
let f = document.inputForm

처리해서 f 변수에 넣어주면

위에 있던 -----------------------if(id.value == "") {    alert('아이디를 입력하세요')    return false}-------------------------------------이거를-----------------------if(f.id.value == '') {    alert('아이디를 입력하세요')    return false}-------------------------------------처럼 쓸 수 있음

이런식으로 formtag는 id대신 name속성을 사용함


exam10.html

체크박스와같이 name값은 모두 같을 수 있지만 value가 다른 것들은

value값들을 따로따로 정리해야 함

결과값 보여주기

function showInfo() {    alert('!!!')}<input type="button" value="결과보기" onclick="showInfo()">

체크박스 체크되었는지 표시

> document.inputForm.hobby[0].checked> document.inputForm.hobby[1].checked

전체클릭버튼 - checked의 값을 모두 true로 바꿈

function selectAll() {    let length = document.inputForm.hobby.length        for (let i = 0; i < length; i++) {        document.inputForm.hobby[i].checked = true    }}<input type="button" value="전체선택" onclick="selectAll()">

전체선택해제버튼 - checked의 값을 모두 false로 바꿈

function deselectAll() {    let length = document.inputForm.hobby.length        for (let i = 0; i < length; i++) {        document.inputForm.hobby[i].checked = false    }}<input type="button" value="전체선택해제" onclick="deselectAll()">

좀 더 간단하게 하자면

function toggle(check) {    let length = document.inputForm.hobby.length        for(let i = 0; i < length; i++) {        document.inputForm.hobby[i].checked = check    }}<input type="button" value="전체선택" onclick="toggle(true)"><input type="button" value="전체선택해제" onclick="toggle(false)">
function toggle() {    let check = true    let hobby = document.inputForm.hobby    let cnt = 0    for(let i = 0; i < hobby.length && hobby[i].checked; i++) {        cnt++    }        if (cnt == hobby.length)        check = false                for(let i = 0; i < hobby.length; i++)\            hobby[i].checked = check}

selectedIndex - 현재 선택한것이 인덱스의 몇 번째인지 추출> document.searchForm.searchType.selectedIndex

focus() - 정확히 어떤 항목이 누락되었는지 표시

if(form.searchType.selectedIndex == 0) {    alert('검색항목을 선택하세요')    form.searchType.focus()    return false}
if(form.searchType.selectedIndex == 0) {    alert('검색어를 입력하세요')    form.searchWord.focus()    return false}
반응형

'Markdowns' 카테고리의 다른 글

ConnectionFactory.java  (0) 2021.07.01
SCOTT계정 EMP 테이블 다시 살리는 쿼리  (0) 2021.06.28

댓글