1. DOM 조작
- HTML과 자바스크립트 코드는 DOM을 조작하는 예제
window.onload 이벤트핸들러
웹페이지가 로드되면 실행되는 이벤트 핸들러
document.body.children
body 요소의 자식 요소 목록을 반환하고 콘솔에 출력
document.getElementByTagName('ul')[0]
문서 내에서 ul태그 요소를 선택 후 출력
myUl.children
선택된 ul요소의 자식 요소 목록 반환하고 콘솔에 출력
반복문을 사용하여 li요소 내용 출력
myUl.firstChild
ul요소의 첫번째 자식노드요소 접근
다양한속성(텍스트, 데이터, HTML 내용 등) 콘솔출력
getElementByTagName("li")[1]
두번째 요소인 li 요소 오렌지 선택 내용을 출력
또한 previousSibling 및 nextSibling 사용하여
해당 요소의 이전과 다음 형제노드 접근하고 내용 출력
새로운 li요소 생성하고 텍스트 내용 설정한 다음
appendChild 및 insertBefore메소드를 사용하여 DOM추가
removeChild()
특정노드 삭제
innerHTML 속성을 사용하여 HTML을 포함한 새로운 li 요소 생성하고 DOM 추가
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script>
window.onload = function () {
var body = document.body.children;
console.log(body);
var myUl = document.getElementsByTagName("ul")[0];
console.log(myUl);
var myLi = myUl.children;
console.log(myLi);
for (var i = 0; i < myLi.length; i++) {
console.log(myLi[i].innerHTML);
}
console.log(myUl.firstChild.innerText);
console.log(myUl.firstChild.innerHTML);
console.log(myUl.firstChild.parentNode);
var orange = document.getElementsByTagName("li")[1];
console.log(orange.innerHTML);
console.log(orange.previousSibling.innerHTML);
console.log(orange.nextSibling.innerHTML);
var newNode = document.createElement("li");
var newText = document.createTextNode("수박");
newNode.appendChild(newText);
console.log(newNode);
myUl.appendChild(newNode);
myUl.insertBefore(newNode, orange);
myUl.removeChild(newNode);
var newNode = document.createElement("li");
newNode.innerHTML = "<b>수박</b>";
myUl.appendChild(newNode);
};
</script>
</head>
<body>
<div>
<p>과일리스트</p>
<ul>
<li>사과</li>
<li>오렌지</li>
<li>바나나</li>
</ul>
</div>
</body>
</html>
2. 정규식
- HTML5에서 제공하는 pattern 속성을 사용하면 사용자 입력 필드의 내용을 정규표현식을 통해 유효성 검사
- 사용자가 입력한 내용이 특정 패턴에 맞는지 브라우저에서 자동확인 가능
예시) pattern 속성을 사용하여 4자~10자 사이의 알파벳과 숫자만 허용하는 입력 필드
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<form>
<input
type="text"
placeholder="4~10자 입력"
pattern="[A-Za-z0-9]{4,10}"
maxlength="10"
required
/>
<button type="submit">확인</button>
</form>
</body>
</html>
- 주요부분: input의 pattern속성
- [A-Za-z0-9]: 알파벳 대문자, 소문자, 숫자 중 하나의 문자를 의미함.
- {4,10}: 4자에서 10자 사이의 문자열
- 해당 패턴이 맞지 않으면 브라우저가 자동으로 경고메시지 표시
(1) 비밀번호 검증
<input id="reg2">
- 비밀번호 검증을 위해 사용된 정규 표현식
/^[A-Za-z0-9]{6,12}$/: 알파벳과 숫자만 포함, 비밀번호 6~12자 사이 문자열
- 버튼이 클릭될때 JavaScript는 test()를 사용하여 입력이 정규표현식과 일치하는지 확인
(2) 이메일 검증을 위한 정규표현식
(3) 전화번호 검증
<input id="reg4">
- 전화번호 검증을 위해 사용된 정규 표현식은 다음과 같다.
- /^\d{3}-\d{3,4}-\d{4}$/
(4) 예시코드
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script>
var str = "visit Human";
var index = str.search("Human");
console.log(index);
var str = "visit Human";
var index = str.search(/Human/);
console.log(index);
var str = "visit Human";
var index = str.search(/human/);
console.log(index);
var str = "visit Human";
var index = str.search(/human/i);
console.log(index);
var str = "visit Human ";
var result = str.replace(/human/i, "Microsoft");
console.log(str);
console.log(result);
var str = "visit Human Human ";
var result = str.replace(/human/gi, "Microsoft");
console.log(str);
console.log(result);
var str = "visit Human Human ";
var pattern = /e/;
console.log(pattern.test(str));
console.log(/i/.test(str));
var str = "visit Human Human ";
var result = str.match(/[i]/g);
console.log(result);
var result = str.match(/[im]/g);
console.log(result);
var result = str.match(/[ims]/g);
console.log(result);
var str = "v0123456789";
var result = str.match(/[3-6]/g);
console.log(result);
var str = "visit Human Human ";
var result = str.match(/(visit|Human)/g);
console.log(result);
var str = "visit1 Human10 Human100 ";
var result = str.match(/\d/g);
console.log(result);
var str = "visit1 Human10 Human10 ";
var result = str.match(/\s/g);
console.log(result);
var result = str.match(/\bHu/g);
console.log(result);
var result = str.match(/0\b/g);
console.log(result);
var str = "visit0001 Human10 Human100";
var result = str.match(/0+/g);
console.log(result);
var str = "visit0001 Human10 Human100 ";
var result = str.match(/10+/g);
console.log(result);
var str = "visit0001 Human10 Human100 ";
var result = str.match(/10?/g);
console.log(result);
var regExp = /^[A-Za-z0-9]{6,12}$/;
var regExp =
/^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
var regExp = /^\d{3}-\d{3,4}-\d{4}$/;
window.onload = function () {
document.getElementById("b2").addEventListener("click", function () {
var regExp = /^[A-Za-z0-9]{6,12}$/;
if (regExp.test(document.getElementById("reg2").value)) {
alert("사용할 수 있는 아이디");
} else {
alert("사용할 수 없는 아이디");
}
});
document.getElementById("b3").addEventListener("click", function () {
var regExp =
/^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
if (regExp.test(document.getElementById("reg3").value)) {
alert("사용할 수 있는 이메일");
} else {
alert("사용할 수 없는 이메일");
}
});
document.getElementById("b4").addEventListener("click", function () {
var regExp = /^\d{3}-\d{3,4}-\d{4}$/;
if (regExp.test(document.getElementById("reg4").value)) {
alert("사용할 수 있는 전화번호");
} else {
alert("사용할 수 없는 전화번호");
}
});
};
</script>
</head>
<body>
숫자와 문자 포함 형태의 6~12자리 이내 암호 정규식
<input type="text" id="reg2" /><button id="b2">버튼</button><br />
이메일 정규식
<input type="text" id="reg3" /><button id="b3">버튼</button><br />
핸드폰번호 정규식
<input type="text" id="reg4" /><button id="b4">버튼</button><br />
<br /><br />
html5 정규식
<form>
<input
type="text"
placeholder="4~10자리 입력"
pattern="[A-Za-z0-9]{4,10}"
maxlength="10"
required
/>
<button type="submit">check</button>
</form>
</body>
</html>