내용과 속성 바꾸기
textContent 와 속성으로 화면의 내용을 바꿉니다.
찾았으면 바꿉니다
앞 단원에서 찾은 요소는 객체입니다(3.6). 속성을 읽고 쓰면 화면이 그 자리에서 바뀝니다.
textContent— 그 안의 글자입니다.innerHTML— 그 안의 마크업입니다. 주의가 필요합니다.getAttribute·setAttribute— 태그에 적는 속성입니다.
글자 바꾸기
실행한 뒤 미리보기 탭을 열어 보세요. 화면의 글자가 바뀌어 있습니다.
const title = document.querySelector("#title"); console.log(title.textContent); title.textContent = "바뀐 제목"; console.log(title.textContent);
읽는 것과 쓰는 것이 같은 이름입니다. = 의 왼쪽에
두면 쓰기, 오른쪽에 두면 읽기입니다.
textContent 와 innerHTML 의 차이
const a = document.querySelector("#a"); const b = document.querySelector("#b"); a.textContent = "<b>굵게</b>"; b.innerHTML = "<b>굵게</b>"; console.log(a.textContent); console.log(b.textContent);
미리보기를 열어 보면 위는 태그가 글자 그대로 보이고, 아래는 태그로 읽혀 굵게 보입니다.
사용자가 입력한 값에는 innerHTML 을 사용하지
않습니다. 입력한 글에 태그가 섞여 있으면 그것이 그대로 살아나기 때문입니다.
글자를 넣을 때는 언제나 textContent 입니다.
속성 읽고 쓰기
const link = document.querySelector("#link"); const photo = document.querySelector("#photo"); console.log(link.getAttribute("href")); link.setAttribute("href", "/new"); console.log(link.getAttribute("href")); console.log(photo.getAttribute("alt")); console.log(photo.hasAttribute("title"));
자주 쓰는 속성은 점으로도 읽고 씁니다 —
input.value,
img.src. 다만 값이 다듬어져 나오는 것이 있어
적은 그대로가 필요하면 getAttribute 를
사용합니다.
data- 속성
이름을 data- 로 시작하면 마음대로 만들어 붙일 수
있습니다. 화면에 보이지 않는 값을 요소에 붙여 둘 때 사용합니다.
const buy = document.querySelector("#buy"); console.log(buy.dataset.productId); console.log(buy.dataset.price); console.log(typeof buy.dataset.price);
data-product-id 는
dataset.productId 로 읽습니다. 하이픈이 사라지고
다음 글자가 대문자가 됩니다. 값은 언제나 글자이므로 계산에 쓰려면
Number 로 바꿔야 합니다(1.4).
처음에 자주 걸리는 것
입력한 글에 태그가 섞이면 그대로 살아납니다. 남의 코드가 내 화면에서
실행되는 통로가 됩니다. 글자를 넣을 때는
textContent 입니다.
box.innerHTML = 입력값; // 위험합니다 box.textContent = 입력값; // 이렇게 적습니다
안의 내용을 통째로 다시 만듭니다. 붙여 둔 이벤트가 사라지고 느립니다. 요소를 더할 때는 4.6 의 방법을 사용합니다.
언제나 글자입니다. dataset.price + 100 은
"1500100" 이 됩니다(1.4).
직접 해보기
제목의 글자 뒤에 " (수정됨)" 을 붙여 화면에
반영하세요. 원래 글자를 지우면 안 됩니다.
단추의 data-price 를 읽어 10% 할인한 금액을
출력하세요.
dataset 값은 글자입니다. 계산 전에 숫자로 바꿔야 합니다.이 단원의 정리
textContent로 글자를 읽고 씁니다. 화면이 그 자리에서 바뀝니다.innerHTML은 태그로 읽습니다. 사용자 입력에는 사용하지 않습니다.- 속성은
getAttribute·setAttribute로 다룹니다. data-로 시작하는 속성은dataset으로 읽습니다.dataset값은 언제나 글자입니다.