<script type="text/javascript">
function changeOn(){
let p = document.getElementById('box');
p.style.backgroundColor="#FA8072";
p.style.width="200px";
p.style.height="100px";
p.style.border="1px solid black";
p.style.borderRadius= "30%";
p.style.boxShadow = "10px 10px 10px gray";
}
</script>
<body>
<h2>What Can JavaScript Do?</h2>
<div id="box" style="background-color:#FFE4E1; width:200px; height:100px; border:1px solid black;
text-align:center"><br><br>스크립트동적변경</div>
<button onclick=changeOn()>스타일 변경</button>
</body>
<title>Class로 불러오기</title>
<script type="text/javascript">
function change(){
let spanArray = document.getElementsByClassName("c");
for(i=0; i<spanArray.length; i++){
spanArray[i].style.color='skyblue';
spanArray[i].style.backgroundColor='yellow';
spanArray[i].style.fontSize="30px";
spanArray[i].style.fontWeight="border";
}
//spanArray[0].style.color = 'red';
//spanArray[0].style.fontSize= '30px';
//spanArray[1].style.color = 'red';
//spanArray[1].style.fontSize= '30px';
//document.write(spanArray.length);
}
</script>
</head>
<body>
<h3>내가 제일 좋아하는 과일
<button type="button" onclick="change()">눌러주세요!</button>
</h3>
저는 빨간 <span class="c">사과</span>를 좋아해서
아침마다 한 개씩 먹고 있습니다. 운동할 때는 중간 중간에
<span class="c">바나나</span>를 먹지요. 탄수화물 섭취가 빨라
힘이 납니다. 또한 달콤한 향기를 품은 <span class="c">체리</span>와
여름 냄새 물씬 나는 <span class="c">자두</span>를 좋아합니다.
</body>
<title>Tag로 불러오기</title>
<script type="text/javascript">
function change(){
let spanArray = document.getElementsByTagName("span");
for(i=0; i<spanArray.length; i++){
spanArray[i].style.color='red';
spanArray[i].style.backgroundColor='yellow';
spanArray[i].style.fontSize="30px";
spanArray[i].style.fontWeight="border";
}
}
</script>
</head>
<body>
<h3>내가 제일 좋아하는 과일
<button type="button" onclick="change()">눌러주세요!</button>
</h3>
저는 빨간 <span>사과</span>를 좋아해서
아침마다 한 개씩 먹고 있습니다. 운동할 때는 중간 중간에
<span>바나나</span>를 먹지요. 탄수화물 섭취가 빨라
힘이 납니다. 또한 달콤한 향기를 품은 <span>체리</span>와
여름 냄새 물씬 나는 <span>자두</span>를 좋아합니다.
</body>
title>name으로 불러오기</title>
<script type="text/javascript">
function change(){
let spanArray = document.getElementsByName("n");
for(i=0; i<spanArray.length; i++){
spanArray[i].style.color='red';
spanArray[i].style.backgroundColor='yellow';
spanArray[i].style.fontSize="30px";
spanArray[i].style.fontWeight="border";
}
}
</script>
</head>
<body>
<h3>내가 제일 좋아하는 과일
<button type="button" onclick="change()">눌러주세요!</button>
</h3>
저는 빨간 <span name="n">사과</span>를 좋아해서
아침마다 한 개씩 먹고 있습니다. 운동할 때는 중간 중간에
<span name="n">바나나</span>를 먹지요. 탄수화물 섭취가 빨라
힘이 납니다. 또한 달콤한 향기를 품은 <span name="n">체리</span>와
여름 냄새 물씬 나는 <span name="n">자두</span>를 좋아합니다.
</body>
CSS선택
ul > li :
ul + h1 :
ul li :
CSS선택자를 이용해서 가져올 때 활용
- querySelector()
- querySelectorAll('ul > li')
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
ul#a{
}
</style>
<script type="text/javascript">
function f() {
//let tag = document.querySelector('ul#a'); //ul태그중에 아이디가 a인 요소
//document.write('<h4>'+tag.tagName.toLowerCase()+" : "+tag.id+'</h4>');
//let tags = document.querySelectorAll('section li'); // section안에 모든 li자손들
//let tags = document.querySelectorAll('#a ul'); // 아이디 a밑에 ul자손들
//let tags = document.querySelectorAll('#c + ul'); // 인접한 동생
//let tags = document.querySelectorAll('#a ~ h1'); // 동생들
let tags = document.querySelectorAll('#a > ul'); // 자식들
for ( i=0; i<tags.length; i++ ){
document.write( '<h4>' + tags[i].tagName.toLowerCase() + " : " +tags[i].id + '</h4>');
}
}
</script>
</head>
< body onload = 'f()' >
<section>
<p id='h'></p>
<ul id='a'>
<li id='e'>
<ul id='b'>
<li id='i'></li>
<li id='j'></li>
</ul>
</li>
<li id='f'></li>
<ul id='k'></ul>
<ul id='l'></ul>
</ul>
<h1 id='c'></h1>
<ul id='d'></ul>
<ul id='g'></ul>
<h1 id='m'></h1>
</section>
</body>
<script type="text/javascript">
let checked_items = [ ]; //(전역변수) 체크된 item들만 저장하는 비어있는 배열준비
// 체크된 것만 배열에 저장하는 함수
function f(){
let tags = document.getElementsByName("chk_interest"); // 체크박스들
//첫번째 자동 체크설정 방법
//tags[0].checked = "checked";
//두번째 방법
//tags[0].setAttribute("checked","checked");
//tags[0].setAttribute("value","sw");
// 체크박스에 체크가 되었는지 전체 체크박스를 반복해서 검사후에 checked_items배열에 넣는다
for(i=0; i<tags.length; i++){
if (tags[i].checked){ // 체크된 아이템들만 checked_items배열에 저장
checked_items.push(tags[i]);
}
}
select(); //select함수로 연결
}
//결과보기를 클릭하면 해야할 일을 정의하는 함수
function select(){
let result = document.getElementById( 'selected' );
let items = "<h3>당신이 선택한 관심품목은 < span style = 'color:blue' >" ;
for( i=0; i<checked_items.length; i++ ){
items = items + checked_items[i].getAttribute("value") + ", " ; //선택품목의 값을 텍스트 문자로 누적
}
result.innerHTML = items + "</span> 입니다.</h3>"; // 결과보기 자리에 출력
}
//속성설정 학습용 함수
function selectImg(obj){
obj.src = "../img/ku1.jpg";
//두번째 방법
//obj.setAttribute('src', '../img/ku1.jpg');
//세번째 방법
//let tag = document.getElementById('img');
//tag.src= "../img/esla.png";
}
</script>
</head>
<body>
<p>관심품목을 선택하시오. : </p><br>
<label>
<input type="checkbox" name="chk_interest" value="it" > IT/컴퓨터 <br>
</label>
<input id='t' type="checkbox" name="chk_interest" value="entertaiment">
<label for='t'>엔터테이먼트</label><br>
<label>
<input type="checkbox" name="chk_interest" value="sports">스포츠<br>
</label>
<label>
<input type="checkbox" name="chk_interest" value="book">도서/책<br>
</label>
<label>
<input type="checkbox" name="chk_interest" value="shopping">쇼핑<br>
</label>
<h3 onclick = 'f()' style = "cursor:pointer; text-decoration: underline;" >▷선택완료</h3>
<h3 id = 'selected' onclick = 'select()' style = "cursor:pointer; text-decoration: underline;">▷결과보기</h3>
<img id='img' src='../img/ku1.jpg' onclick='setImg(this)' width="200px" height="200px">
</body>
DOM 객체
let tag = document.getElementById(' ')
속성
id : a
lang : kor * let s = window.getComputedStyle( )
style * let value = s.getPropertyValue( 'color' )
title
tagName
innerHTML
메소드
setAttribute()
getAttribute()
<style type="text/css">
#mySpan {
color: orange;
background-color: green;
}
</style>
<script type="text/javascript">
function setColor( ){
span = document.getElementById('mySpan');
span.style.color = 'red';
}
function getColor( ){
span = document.getElementById( 'mySpan' );
/*
let value = span.style.color;
let back = span.style.backgroundColor;
document.write("색상값은 "+value+"이고 배경색은 "+back+"색 입니다. 맞나요? <br>");
*/
let s = window.getComputedStyle( span );
let value = s.getPropertyValue( 'color' );
let back = s.getPropertyValue( 'background-color' );
document.write("색상값은 " +value+ "이고 배경색은 " +back+ "색 입니다. 맞나요? <br>");
}
</script>
</head>
<body>
<p>이것은 <span id='mySpan' onclick='setColor()'> 문장 </span>입니다</p>
<p>여기를 누르면 <span id='my' style="background-color: yellow" onclick='getColor()'>셀렉터로 설정된 스타일 프로퍼티를 읽기<span> 할 수 있다.</p>
</body>
document.write( )
; document 객체가 닫히고 난 다음에는 HTML텍스트를 추가하기 위한 write()를 사용하지 못한다.
; 만약 write()를 사용해서 출력하면, 현재 출력되어있는 내용을 모두 지우고 새롭게 쓴다.
<body onclick="document.write(' <h3>클릭되었습니다. onclick으로 추가된 write()에 있는 텍스트가 출력됩니다.</h3> ')" >
<h3> write()를 잘못 적용한 사례 </h3>
<hr>
<p> document문서는 HTML문서가 모두 출력된 다음에는 닫히므로 추가할 수 없다. <br>
그런데 이때 write()로 새로운 내용을 출력하면, 앞의 내용이 지워지고 새로운 창에서 작성된다.</p>
</body>
1) document.open()
- 기존의 내용을 모두 지우고 새로운 document객체를 준비한다.
- 새로운 HTML 텍스트를 받아들일 준비한다.
2) document.write()
- 새로운 HTML 텍스트를 새로 준비한 document객체에 담는다.
3) document.close()
- HTML텍스트를 모두 쓴 후, document객체를 닫는다.
<style type="text/css">
span : hover {cursor: pointer;}
span {color: pink}
</style>
<script type="text/javascript">
function newDoc( ){
document.open( );
document.write("<html><head></head>");
document.write("<body><h1>현재 창에 새로운 document객체입니다.</h1></body>");
document.close( );
}
function newWin( ){
let newWin= window.open(" ", "outWind"," ");
newWin.document.open( );
newWin.document.write( '<html><head><title></title></head><body><h1>안녕하세요^^ 새로운 윈도우창입니다.' );
newWin.document.write( '......</h1>' );
newWin.document.write( '</body></html>' );
newWin.document.close( );
}
</script>
</head>
<body>
<h3>새로운 document객체 열기와 닫기</h3>
<hr>
<pre>
1) document.open()
- 기존의 내용을 모두 지우고 새로운 document객체를 준비한다.
- 새로운 HTML 텍스트를 받아들일 준비한다.
2) document.write()
- 새로운 HTML 텍스트를 새로 준비한 document객체에 담는다.
3) document.close()
- HTML텍스트를 모두 쓴 후, document객체를 닫는다.
</pre>
<h4> 현재의 창에 새로운 document객체를 생성합니다. <span onclick='newDoc()'>여기를 클릭해주세요ㅎㅅㅎ </span></h4>
<h4> 새로운 윈도우 창에 새로운 document객체를 생성합니다. <span onclick='newWin()'>여기를 클릭하세요ㅇㅅㅇ </span></h4>
</body>
createElement( '태그이름' )
createTextNode( '텍스트문자열' )
appendChild(자식노드): 막내로 추가한다.
removeChild(): 막내부터 지워진다.
insertBefore(새로운 노드, 특정 노드): 특정 노드앞에 새로운 노드를 붙인다
replaceChild(new,old): 요소노드(old)를 새로운 노드(new)로 대체한다
<style type="text/css">
div {cursor }
</style>
<script type="text/javascript">
function createDIV( ) {
//기준
let obj = document.getElementById( "parent" );
//새로운 붙일 요소
let newDiv = document.createElement( 'div' ); //추가할 새로운 노드
newDiv.innerHTML="새로 생성된 DIV입니다.";
newDiv.setAttribute( 'id', 'MyDIV' );
newDiv.style.backgroundColor = 'yellow';
newDiv.style.fontSize = '20px';
newDiv.style.fontWeight = 'border';
newDiv.addEventListener('click',
function( ){
let element = this.parentElement
element.removeChild(this);
}
);
//붙이기
obj.appendChild(newDiv);
}
</script>
</head>
<body id="parent">
<h3> DIV객체를 동적으로 생성,삽입,삭제해보자 </h3>
<hr>
<p>
DOM트리에 동적으로 객체를 삽입할 수 있습니다.
</p>
<a href='javascript:createDIV()'> DIV생성 </a>
</body>
<style type="text/css">
p {background-color: green; display: block; width: 500px; height: 700px;}
div {background-color: yellow}
</style>
<script type="text/javascript">
function addDOM( ){
// 생성
let newDiv = document.createElement('div');
newDiv.innerHTML = "새로 생성된 DIV입니다.";
newDiv.setAttribute('id','myDIV');
newDiv.style.backgroundColor='yellow';
//기준
let p = document.getElementById( 'p' );
//추가
p.appendChild( newDiv );
}
function removeDOM( ){
let myDiv = document.getElementById('myDIV'); // 떼어낼 노드
let parent = myDiv.parentElement; // 부모
//부모에서 제거
parent.removeChild(myDiv);
}
</script>
</head>
<body>
<p id="p"> HTML문서의 동적구성 </p>
<button type="button" onclick=" addDOM( ) "> 추가 </button>
<button type="button" onclick=" removeDOM( ) "> 제거 </button>
</body>
<body>
여행하고 싶은 지역 <input id='t1' type="text">
<button type="button" onclick=" listPlace() "> 추가 </button>
<ul id='t2'> </ul>
<script type="text/javascript">
function listPlace(){
let tag1 = document.getElementById('t1'); // input
let tag2 = document.getElementById('t2'); // 추가할때의 기준
//요소 생성
let newPlace = document.createElement( ' li ' );
//텍스트노드생성 - innerHTML
let placeNode = document.createTextNode( tag1.value ); //input으로 받은 값을 텍스트노드로 생성
//추가하기
newPlace.appendChild( placeNode );
tag2.appendChild( newPlace );
//input에 입력한 데이터를 지운다.
tag1.value = '';
}
</script>
</body>
<script type="text/javascript">
function insertImg1( ){
let tag = document.getElementById( 'd' );
let newImg = document.createElement( 'img' );
newImg.setAttribute('src','../img/ku1.jpg');
newImg.setAttribute('width','100px');
newImg.setAttribute('height','100px');
tag.appendChild( newImg );
}
function insertImg2( ){
let tag = document.getElementById ('d');
let newImg = document.createElement ('img');
newImg.setAttribute ('src','../img/ku2.jpg');
newImg.setAttribute ('width','100px');
newImg.setAttribute ('height','100px');
tag.appendChild (newImg);
}
function insertImg3( ){
let tag = document.getElementById( 'd' );
let newImg = document.createElement('img');
newImg.setAttribute('src','../img/ku3.jpg');
newImg.setAttribute('width','100px');
newImg.setAttribute('height','100px');
tag.appendChild( newImg );
}
</script>
</head>
<body>
<h3>버튼을 클릭해서 이미지를 추가해봅니다.</h3>
<hr>
<button type="button" onclick="insertImg1()"> 이미지1 </button>
<button type="button" onclick="insertImg2()"> 이미지2 </button>
<button type="button" onclick="insertImg3()"> 이미지3 </button>
<br><br>
<div id="d">
</div>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
//국내
function listPlace1() {
let tag1 = document.getElementById('t1'); // input
let tag2 = document.getElementById('d1'); // 부모 div
let tag3 = document.getElementById('d2'); // 자식 div
//생성
let newTag = document.createElement('div');
let txtNode = document.createTextNode(tag1.value); // input으로 받은 값을 텍스트 노드로 생성
newTag.appendChild(txtNode);
newTag.style.color='pink';
//붙이기
tag2.insertBefore(newTag,tag3); //tag3앞에다 newTag를 붙인다
tag1.value='';
}
//해외
function listPlace2() {
let tag1 = document.getElementById('t1'); // input
let tag2 = document.getElementById('d1'); // 부모 div
let tag3 = document.getElementById('d2'); // 자식 div
//생성
let newTag = document.createElement('div');
let txtNode = document.createTextNode(tag1.value); // input으로 받은 값을 텍스트 노드로 생성
newTag.appendChild(txtNode);
newTag.style.color='green';
//붙이기
tag3.appendChild(newTag); //tag3앞에다 newTag를 붙인다
tag1.value='';
}
</script>
</head>
<body>
추천 여행지 : <input id='t1' type='text'>
<button type="button" onclick='listPlace1()'>국내</button>
<button type="button" onclick='listPlace2()'>해외</button>
<div id='d1'>
<div>1. 국내여행지</div>
<div id='d2'>2. 해외여행지</div>
</div>
</body>
</html>