11.3 HTML 요소 내용과 속성
11.3.1 요소 내용 가져오기
자바스크립트에서 HTML 요소의 내용을 가져오는 데는 innerHTML과 innerText 프로퍼티를 이용한다. 먼저 innerHTML을 이용해서 목록 <ul> 요소의 내용을 가져오는 다음의 예를 살펴보자.
| 예제 11-10. innerHTML로 요소의 내용 가져오기 | get_html.html | 코드 원문 |
<p id="p1">
<span style="color:red">안녕</span>
</p>
<script>
const x = document.getElementById("p1");
alert(x.innerHTML)
</script>
| 예제 11-10. innerHTML로 요소의 내용 가져오기 | get_html.html | 코드 원문 |
<p id="p1">
<span style="color:red">안녕</span>
</p>
<script>
const x = document.getElementById("p1");
alert(x.innerHTML)
// x.innerHTML은 아이디 p1의 내용(HTML 코드 포함)을 가져온다.
따라서 alert(x.innerHTML)은 그림 11-11에서와 같이 HTML 코드가
모두 포함된 요소의 내용을 알림창에 출력한다. */
</script>
이번에는 앞 예제 11-10에서 사용된 innerHTML 속성 대신 innerText를 사용해서 HTML 요소의 내용을 가져온다.
| 예제 11-11. innerText로 요소의 내용 가져오기 | get_text.html | 코드 원문 |
<p id="p1">
<span style="color:red">안녕</span>
</p>
<script>
const x = document.getElementById("p1");
alert(x.innerText);
</script>
| 예제 11-11. innerText로 요소의 내용 가져오기 | get_text.html | 코드 원문 |
<p id="p1">
<span style="color:red">안녕</span>
</p>
<script>
const x = document.getElementById("p1");
alert(x.innerText);
/* x.innerText는 아이디 p1 요소의 내용에서 순수한 텍스트만 가져온다. */
</script>
11.3.2 요소 내용 결정하기
자바스크립트에서 HTML 요소의 내용을 설정하는 데에도 앞에서 사용한 DOM의 innerHTML과 inner Text 프로퍼티를 이용한다.
다음 예제를 통해서 DOM의 innerHTML과 innerText 프로퍼티를 이용해서 HTML 요소의 내용을 설정하는 방법을 익혀보자.
| 예제 11-12. HTML 요소의 내용 설정하기 | set_html.html | 코드 원문 |
<ul>
<li>항목1</li>
<li>항목2</li>
<li></li>
<li></li>
<li></li>
</ul>
<script>
const x = document.querySelectorAll("li");
x[2].innerHTML = "<span style='color:red'>텍스트</span>";
x[3].innerHTML = "텍스트2";
x[4].innerHTML = "텍스트3";
</script>
| 예제 11-12. HTML 요소의 내용 설정하기 | set_html.html | 코드 원문 |
<ul>
<li>항목1</li>
<li>항목2</li>
<li></li>
<li></li>
<li></li>
</ul>
<script>
const x = document.querySelectorAll("li");
// querySelectorAll()를 사용해서 요소 li를 선택한다.
x[2].innerHTML = "<span style='color:red'>텍스트</span>";
/* "<span style='color:red'>텍스트</span>" 코드를 이용해서
x[2]의 요소에 텍스트1를 빨간색으로 변경하는 내용을 설정한다. */
x[3].innerHTML = "텍스트2";
/* x[1]에 요소에 "텍스트2"의 요소를 집어넣는다. */
x[4].innerHTML = "텍스트3";
</script>
11.3.3 요소 속성 변경하기
DOM에서 HTML 객체의 프로퍼티에 값을 설정함으로써 HTML 요소의 속성(attribute) 값을 변경할 수 있다.
다음 예제에서는 이미지의 src, width, height 속성 값을 변경하기 위해서 DOM의 src, width, height 프로퍼티를 이용하고 있다.
| 예제 11-13. 이미지의 src, width, height 속성 값 변경하기 | change_image.html | 코드 원문 |
<img id="image" src="./img/fish1.jpg"><br>
<button type="button" onclick="changeImage()">이미지 변경</button>
<button type="button" onclick="changeSize()">크기 변경</button>
<script>
function changeImage() {
document.getElementById("image").src = "./img/image1.png";
}
function changeSize() {
document.getElementById("image").width = "50";
document.getElementById("image").height = "50";
}
</script>
| 예제 11-13. 이미지의 src, width, height 속성 값 변경하기 | change_image.html | 코드 원문 |
<img id="image" src="./img/fish1.jpg"><br>
<button type="button" onclick="changeImage()">이미지 변경</button>
/* html <button> 태그를 설정한다. button을 누르면 changeImage()
메서드가 실행된다. 버튼 안에는 이미지 변경이라는 텍스트가 들어간다. */
<button type="button" onclick="changeSize()">크기 변경</button>
/* html <button> 태그를 설정한다. buttton을 누르면 changeImage()
메서드가 실행된다. 버튼 안에는 크기 변경이라는 텍스트가 들어간다. */
<script>
function changeImage() {
// 메서드 changeImage() 선언
document.getElementById("image").src = "./img/image1.png";
// getElementById로 가게 id image 입력 상대경로로 ./img/image1.png 설정
}
function changeSize() {
// 메서드 changeSize() 선언
document.getElementById("image").width = "50";
document.getElementById("image").height = "50";
}
</script>
11.3.4 요소 CSS 변경하기
DOM에서 자바스크립트는 HTML 요소의 CSS 스타일을 적용할 수 있다. 다음 예제에서는 <p> 요소의 배경 색상, 텍스트 색상, 경계선을 설정하기 위해 DOM의 color, backgroundColor, border 프로퍼티가 적용된다.
| 예제 11-14. CSS 스타일 변경하기 | change_css.html | 코드 원문 |
<p id="p1">안녕</p>
<script>
const x = document.getElementById("p1");
x.style.color = "red";
x.style.backgroundColor = "yellow";
x.style.border = "solid 5px blue";
</script>
| 예제 11-14. CSS 스타일 변경하기 | change_css.html | 코드 원문 |
<p id="p1">안녕</p>
<script>
const x = document.getElementById("p1");
/* getElementById() 메서드를 사용해서 id의 p1이 가리키는 요소 태그 <p>를 불려오고
변수 x와 연결한다. */
x.style.color = "red";
// 요소 x의 스타일 color를 "red"로 지정한다.
x.style.backgroundColor = "yellow";
x.style.border = "solid 5px blue";
</script>
11.4 Document 객체의 프로퍼티
DOM에서 제공하는 Document 객체의 프로퍼티를 이용하면 HTML 문서의 URL과 제목, 그리고 문서 내에 있는 이미지, 링크, 폼 등에 접근하여 정보를 얻거나 해당 요소에 값을 설정할 수 있다. Document 객체에서 많이 사용되는 프로퍼티를 표로 정리하면 다음과 같다.
| Document 객체의 주요 프로퍼티 | |
| 프로퍼티 | 설명 |
| URL | HTML 문서의 URL을 반환 |
| title | HTML 문서의 제목을 설정하거나 반환 |
| forms | HTML 문서에서 모든 <form> 요소의 콜렉션을 반환 |
| links | HTML 문서에서 모든 <link> 요소의 콜렉션을 반환 |
| images | HTML 문서에서 모든 <img> 요소의 콜렉션을 반환 |
11.4.1 URL 프로퍼티
Document 객체의 URL 프로퍼티는 문서의 URL 주소를 반환한다.
| 예제 11-15. URL 프로퍼티로 URL 주소 가져오기 | document_url.html | 코드 원문 |
<p id="show"></p>
<script>
document.getElementById("show").innerHTML = document.URL;
</script>
| 예제 11-15. URL 프로퍼티로 URL 주소 가져오기 | document_url.html | 코드 원문 |
<p id="show"></p>
<script>
document.getElementById("show").innerHTML = document.URL;
/* HTML 문서의 URL를 반환한다. id값이 show인 p 태그에 출력한다. */
</script>
11.4.2 title 프로퍼티
Document 객체의 title 프로퍼티는 문서의 제목을 설명하거나 가져오는데 사용된다.
| 예제 11-16. title 프로퍼티로 문서의 제목 가져오기 | document_title1.html | 코드 원문 |
<title>문서 제목</title>
<body>
<p id="show"></p>
<script>
document.getElementById("show").innerHTML = document.title;
</script>
</body>
| 예제 11-16. title 프로퍼티로 문서의 제목 가져오기 | document_title1.html | 코드 분석 |
<title>문서 제목</title>
<body>
<p id="show"></p>
<script>
document.getElementById("show").innerHTML = document.title;
/* title 프로퍼티를 이용해서 문서의 제목을 가져온다. */
</script>
</body>
다음은 title 프로퍼티를 이용해서 HTML 문서의 제목을 설정했다.
| 예제 11-17. title 프로퍼티로 문서의 제목 설정하기 | document_title2.html | 코드 원문 |
<script>
document.title="새로운 문서 제목";
</script>
document.title에 '새로운 문서 제목'을 설정하면 상단 탭 버튼에 HTML 문서의 제목을 '새로운 문서 제목'으로 변경할 수 있다.
11.4.3 forms 프로퍼티
Document 객체의 forms 프로퍼티는 문서의 모든 <form> 요소들을 저장한 HTMLCollection 객체를 반환한다.
HTMLCollection 객체는 문서의 요소에 대한 정보를 배열과 유사한 형태로 담고 있으며 인덱스를 통해서 객체에 접근할 수 있다.
다음 예제에서는 forms 프로퍼티를 이용해서 HTML 문서에 있는 <form> 요소의 아이디(id)를 가져온다.
| 예제 11-18. forms 프로퍼티로 <form> 요소의 아이디 가져오기 | document_forms.html | 코드 원문 |
<form id="form_id1">
이름 : <input type="text" name="name"><br>
<button>확인</button>
</form>
<form id="form_id2">
이메일 : <input type="text" name="email"><br>
<button>확인</button>
</form>
<p id="show"></p>
<script>
const x = document.forms[0].id;
document.getElementById("show").innerHTML = x;
</script>
| 예제 11-18. forms 프로퍼티로 <form> 요소의 아이디 가져오기 | document_forms.html | 코드 분석 |
<form id="form_id1">
이름 : <input type="text" name="name"><br>
<button>확인</button>
</form>
<form id="form_id2">
이메일 : <input type="text" name="email"><br>
<button>확인</button>
</form>
<p id="show"></p>
<script>
const x = document.forms[0].id;
/* document.forms[0]은 <form> 요소를 선택한다. 따라서 document.forms[0].id는
<form> 요소의 아이디(id)인 'form_id1'을 반환한다. */
document.getElementById("show").innerHTML = x;
</script>
다음 예제에서는 forms 프로퍼티를 이용해서 <input> 요소에 사용자가 입력한 값을 가져온다.
| 예제 11-19. forms 프로퍼티로 <input> 요소 값 가져오기 | document_forms2.html | 코드 원문 |
<form name="form1">
아이디 : <input type="text" name="id"><br>
이름 : <input type=""text" name="name"><br>
비밀번호 : <input type="password" name="pass"><br>
</form>
<button onclick="getInput()">확인</button>
<p id="show"></p>
<script>
function getInput() {
const x = document.forms["form1"];
let text = "";
for (let i=0; i<x.length; i++) {
text += x.elements[i].value + "<br>";
document.getElementById("show").innerHTML = text;
}
}
</script>
| 예제 11-19. forms 프로퍼티로 <input> 요소 값 가져오기 | document_forms2.html | 코드 원문 |
<form name="form1">
아이디 : <input type="text" name="id"><br>
/* <input> 태그 선언 텍스트 타입으로 입력 받는다. */
이름 : <input type=""text" name="name"><br>
비밀번호 : <input type="password" name="pass"><br>
</form>
<button onclick="getInput()">확인</button>
<p id="show"></p>
<script>
function getInput() {
/* 사용자 정의 함수 getInput()을 선언한다. */
const x = document.forms["form1"];
/* document.forms["forms1"]은 문서에서 'form1' 이름을 가진
<form> 요소를 선택한다. */
let text = "";
for (let i=0; i<x.length; i++) {
text += x.elements[i].value + "<br>";
document.getElementById("show").innerHTML = text;
}
}
</script>
11.4.4 links 프로퍼티
Document 객체의 links 프로퍼티는 문서에서 <a> 요소를 포함한 모든 링크 요소로 구성된 HTMLCollection 객체를 반환한다.
다음은 links 프로퍼티를 이용하여 HTML 문서 내 링크 요소의 개수를 파악하는 예이다.
| 예제 11-20. links 프로퍼티로 링크 요소의 갯수 알아보기 | document_links.html | 코드 원문 |
<ul>
<li><a href="http://naver.com">네이버</a></li>
<li><a href="https://daum.net">다음</a></li>
<li><a href="https://google.com">구글</a></li>
</ul>
<p id="show"></p>
<script>
const x = document.links.length;
document.getElementById("show").innerHTML = "링크 수:" + x;
</script>
| 예제 11-20. links 프로퍼티로 링크 요소의 갯수 알아보기 | document_links.html | 코드 원문 |
<ul>
<li><a href="http://naver.com">네이버</a></li>
/* 네이버 글자와 링크 http://naver.com을 연결한다. */
<li><a href="https://daum.net">다음</a></li>
/* 다음 글자와 링크 https://daum.net을 연결한다. */
<li><a href="https://google.com">구글</a></li>
/* 구글 글자와 링크 https://google.com을 연결한다. */
</ul>
<p id="show"></p>
<script>
const x = document.links.length;
/* document.links는 웹 페이지 <a> 요소들의 콜렉션을 반환한다.
document.links.length는 링크 요소의 개수를 나타낸다. */
document.getElementById("show").innerHTML = "링크 수:" + x;
</script>
다음 예제에서는 links 프로퍼티를 이용해서 <a> 요소의 링크 주소, 즉 속성 href의 값을 가져온다.
| 예제 11-21. links 프로퍼티로 링크 요소의 갯수 알아보기 | document_links2.html | 코드 원문 |
<ul>
<li><a href="https://naver.com">네이버</a></li>
<li><a href="https://daum.net">다음</a></li>
<li><a href="https://google.com">구글</a></li>
</ul>
<p id="show"></p>
<script>
const link = document.links;
let text = "";
for (let i=0; i<link.length; i++)
text += link[i].href + "<br>";
document.getElementById("show").innerHTML = text;
</script>
| 예제 11-21. links 프로퍼티로 링크 요소의 갯수 알아보기 | document_links2.html | 코드 원문 |
<ul>
<li><a href="https://naver.com">네이버</a></li>
// 하이퍼링크 태그 선언
<li><a href="https://daum.net">다음</a></li>
<li><a href="https://google.com">구글</a></li>
</ul>
<p id="show"></p>
// p태그 선언 id값은 "show"
<script>
const link = document.links;
/* document 객체의 links 프로퍼티를 사용해서 <a> 요소의 링크 주소
속성 href의 값을 가져온다. */
let text = "";
for (let i=0; i<link.length; i++)
text += link[i].href + "<br>";
// link[i].href는 문서에서 n번째 <a> 요소의 href 값이다.
document.getElementById("show").innerHTML = text;
</script>
11.4.5 images 프로퍼티
Document 객체의 images 프로퍼티는 문서에서 모든 <img> 요소의 콜렉션을 HTMLCollection 객체로 반환한다.
| 예제 11-22. images 프로퍼티로 속성 값 가져오기 | document_images.html | 코드 원문 |
<img src="./img/cat1.jpg" width="200">
<img src="./img/cat2.jpg" width="200">
<p id="show"></p>
<script>
const image = document.images;
document.getElementById("show").innerHTML = image[0].src;
</script>
| 예제 11-22. images 프로퍼티로 속성 값 가져오기 | document_images.html | 코드 원문 |
<img src="./img/cat1.jpg" width="200">
<img src="./img/cat2.jpg" width="200">
<p id="show"></p>
<script>
const image = document.images;
// document에서 images의 프로퍼티를 변수 image에 연결한다.
document.getElementById("show").innerHTML = image[0].src;
// image[0].src를 사용해서 image[0]의 속성 src 값을 반환한다.
</script>
'프로그래밍 > 예제로 배우는 자바스크립트 요약 및 분석(IT 전공 서적)' 카테고리의 다른 글
| 예제로 배우는 자바스크립트 요약 및 코드 분석 12장 12.1~12.3 (0) | 2023.10.18 |
|---|---|
| 예제로 배우는 자바스크립트 요약 및 코드 분석 11장 11.5~11.6 (0) | 2023.10.17 |
| 예제로 배우는 자바스크립트 요약 및 코드 분석 11장 11.1 ~ 11.2 (0) | 2023.10.16 |
| 예제로 배우는 자바스크립트 요약 및 코드 분석 10장 10.4 (0) | 2023.10.16 |
| 예제로 배우는 자바스크립트 요약 및 코드 분석 10장 10.2~10.3 (0) | 2023.10.15 |