반응형

write/writeln

[광고 누르면 오늘의 행운 상승!!]

  • document.write 메소드는 가장 쉽게 문서 내에 콘텐츠를 추가하는 방법
  • DOM 초창기에 만들어진 메소드로 노드에 적용할 수 없음

Write 사용 방법

  • write 메소드를 이용하여 콘텐츠를 추가하고자 하는 HTML 문서의 특정 위치에서 사용하는 것
  • 웹 브라우저가 웹 문서를 읽어 들어 화면을 만들 때 원하는 위치에 원하는 결과를 얻을 수 있음.

주의사항

  • document.write를 함수 내부에 사용하여 이벤트를 호출했을 때 → 기존 문서 전체를 지워버리고, 콘텐츠를 출력함

Writeln

  • 줄바꿈을 표시한다는 것 이외에는 write와 동일함
  • BUT! HTML에서는 줄바꿈을 무시하기 때문에 <pre> 요소를 포함하는 콘텐츠를 출력하기 전에는 → write , writeln은 동일한 결과를 보임

노드의 생성과 삽입

<<createElement() / createTextNode()>>

요소와 텍스트 노드 생성

var newElement = document.createElement("p");
var newTextNode = document.createTextNode("이것은 토스트 입니다");

//p요소를 생성해 변수 newElement에 할당
//텍스트 노드를 생성해 변수 newTextNode 에 할당

 

<<appendChild>>

//HTML 코드

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<h3>이것은 문서 단락입니다.</h3>
		<script src = "script.js"></script>
	</body>
</html>

//JavaScript 코드

var newElement = document.createElement("p");
var newTextNode = document.createTextNode("이것은 토스트 입니다");
document.getElementsByTagName("body")[0].appendChild(newElement).appendChild(newTextNode);

<<insertBefore()>>

  • 특정 요소 앞에 삽입하기 위해 사용
  • 부모노드.insertBefore(삽입할 노드, 레퍼런스 노드 )
var newElement = document.createElement("p");
var newTextNode = document.createTextNode("이것은 토스트 입니다");

var h3Element= document.getElementsByTagName("h3")[0];
var newHTMLCode = newElement.appendChild(newTextNode);

document.getElementsByTagName("body")[0].insertBefore(newHTMLCode,h3Element);

<<replaceChild>>

  • 자식 노드 중 특정 노드를 새로운 노드로 치환하는 역할
  • 부모 노드.replaceChild(새로운 노드, 바뀔 노드)
var newElement = document.createElement("p");
var newTextNode = document.createTextNode("이것은 토스트 입니다");

var h3Element= document.getElementsByTagName("h3")[0];
var newHTMLCode = newElement.appendChild(newTextNode);

document.getElementsByTagName("body")[0].replaceChild(newHTMLCode, h3Element);

노드 속성 조작

  • 생성한 노드의 class 또는 id 속성 적용
    → getAttribute()와 setAttribute() 메소드 사용

  • 노드.getAttribute("속성명") : 노드의 속성 값을 가져온다.

  • 노드.setAttribute("속성명", "속성값") : 노드의 속성을 속성값으로 설정한다.

<<HTML>>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Insert title here</title>
		<link rel = "stylesheet" href="SetAttribute.css">
	</head>
	<body>
		<div><a href="#">클릭</a></div>
		<script src="SetAttribute.js"></script>
	</body>
</html>

 

<<CSS>>

a{
	text-decoration : none;
	color : black;
	font-size : 0.8em;
}
div{
	width : 150px;
	height : 50px;
	text-align : center;
}
div.yellow{
	background-color:yellow;
	border: 4px dotted gray;
}

div.yellowgreen{
	background-color:yellowgreen;
	border: 4px dotted gray;

}div.pink{
	background-color:pink;
	border: 4px dotted gray;
}

 

<<JavaScript>>

var box = document.getElementsByTagName("div");
var boxTouch = document.getElementsByTagName("a");

boxTouch[0].addEventListener("click",setStyle, false);

function setStyle(){
	var styleType = box[0].getAttribute("class");
	switch(styleType){
		case "yellow":
			box[0].setAttribute("class", "yellowgreen"); 
			break;
		case "yellowgreen":
			box[0].setAttribute("class", "pink"); 
			break;
		case "pink":
			box[0].setAttribute("class", "yellow"); 
			break;
	}
}

 

CSS의 변경

  • CSS 정의가 되어 있는 style 프로퍼티를 사용하면
    → 접근한 노드의 CSS속성을 직접 적용하거나 변경 가능
    → 노드.style.css속성 = css속성값

주의사항

  • CSS속성을 표시할 때 하이픈(-)은 모두 대문자 표기로 바꿔주어야 함
  • 예) CSS 속성 중 배경색 속성 : background-color → backgroundColor

<<HTML>>

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Insert title here</title>
		<link rel = "stylesheet" href="style.css"> 
		
		
	</head>
	<body>
		<div class = "yellow"><a href="#">클릭</a></div>
		<script src="SetAttribute.js"></script>
	</body>
</html>

 

<<CSS>>

@charset "UTF-8";

a{
	text-decoration : none;
	color : yellow;
	font-size : 0.8em;
}

div{
	width : 150px;
	height : 50px;
	text-align : center;
	background-color : yellow;
	border: 4px dotted gray;
}

 

<<JavaScript>>

var box = document.getElementsByTagName("div");
var boxTouch = document.getElementsByTagName("a");

var clickCount = 0
boxTouch[0].addEventListener("click",setStyle, false);

function setStyle(){
	var styleNum = clickCount % 3;
	switch(styleNum){
		case 0:
			box[0].style.backgroundColor = "yellowgreen";
			break;
		case 1:
			box[0].style.backgroundColor = "pink";
			break;
		case 2:
			box[0].style.backgroundColor = "yellow";
			break;
	}
	clickCount++;
}

innerHTML

  • 비표준의 대명사로 불려옴

  • HTML5에서 표준으로 인정

  • createElement()와 createTextNode() 그리고 appendChild()를 한꺼번에 처리하는 효과 발휘

function console(outputString){
	document.getElementById("console").innerHTML = outputString;
}
  • 아이디 속성 값이 console인 요소 내부에 outputString 전달인자를 넣으라는 의미

  • 특정 요소 내부에 HTML코드를 삽입하는 가장 빠른 방법

반응형

+ Recent posts