본문 바로가기

자바스프링웹공부(2024)/자바스크립트

2024.08.13. JS - history, location, document 객체 - getElementByXX

반응형

* history 객체

- 프로퍼티 : length - 현재 ㅡ라우저창의 history 목록에 있는 항목의 개수, 즉 방문한 사이트 개수저장.

  ex. console.log(history.length);

- 메서드 : back() - 이전페이지

                forward() - 다음페이지

                go() - 현재 페이지를 기준으로 상대적인 위치에 있는 페이지를 현재 화면으로 불러옴.

                          ex. history.go(1) - 다음페이지

                                history.go(-1) - 이전페이지

* location 객체

- 현재 문서의 URL 주소 정보가 들어있음.

- 프로퍼티 : href() - 전체 URL, 이 값을 변경하면 해당 주소로 이동함.

- 메서드 : reload() - 현재 문서 다시 불러오기

                replace() - 현재 문서의 URL 지우고 다른 URL의 문서로 교체.


[window 객체의 하위객체 - document]

- HTML 문서 정보(=내용)를 관리하는 객체
- 문서 정보 확인, 내용 변경 등의 작업 수행 가능.
- 속성 : title, bgColor, fgColor
- 메서드 : wirte(), querySelector(), getElementById() 등

<head>
<script>
    console.log(document); // document 객체 전체내용(HTMl 모든 문서내용) 출력
    console.log(document.head); // document 객체 하위객체(요소)인 head 내용출력
    console.log(document.body); // null 출력
    // => 	현재 자바 스크립트 코드는 <head></head>태그 사이에 위치애 있으므로 
    //    	이 코드들이 실행되는 시점에 head 객체까지는 생성이 되어 있으나 아직 <body>태그를 로딩하지않아 
    //		boby 객체가 생성되기 전이므로 body 객체 출력시 null 값이 출력되며, 
    //		body 객체를 통해 작업이 불가함을 의미함(=객체 없응)
    // => 	따라서 body 태그가 로딩된 후에 document.body 형식으로 body 객체에 접근해야 한다. 
</script>
</head>

 

* title 속성

- 현재 HTML 문서의 제목(= 웹브라우저 제목표시줄 내용 = title 태그 내용) 확인
  => document 객체의 title 속성값 활용
  ex. console.log("document.title : " + document.title); // 현재 문서의 제목 확인.

- HTML 문서의 제목 변경(=title 속성값 변경)
  ex. document.title = "변경된 title";

 

* bgColor, fgColor 속성

- HTML 문서의 색상 정보 확인 ( bgColor, fgColor 속성값 확인 )
  ex. console.log("document.fgColor : " + document.fgColor); // 문서 전경색(주로 텍스트)
  ex. console.log("document.bgColor : " + document.bgColor); // 문서 배경색
  => bgColor, fgColor 속성값을 별도로 설정한 적이 없을 경우 널스트링("")값이 저장되어 있음.
       (전달되는 해당값이 비어있으면 기본값 사용됨) 
- HTML 문서의 색상정보 변경 ( bgColor, fgColor 속성값 변경 )
  => 변경할 속성값으로 "색상명" 또는 색상코드값("RRGGBB") 형태로 지정
  1. 색상명을 영문자로 지정하는 방식(대소문자 무관) 
   ex. document.fgColor = "gray"; // 전경색(텍스트)를 파란색 으로 변경
   ex. document.bgColor = "lightorange"; // 배경색을 연한핑크색 으로 변경.
  2 색상! 코드값을 16진수로 지정하는 방식(디테일한 지정이 가능함) 
   => "#RRGGBB" 형식으로 지정 (빨 초 파 세가지 색상 조합.)
        각 색상에 해당하는 값을 16진수 2자리(00 ~ FF)값의 범위 내에서 지정  
         (이때, 색의 3원색이 아닌 빛의 3원색 원리로 조합. 숫자가 크면 흰색 숫자가 적으면 검정.)
        모든 값이 최대치(FFFFFF)이면 흰색, 모든 값이 최소치(000000)면 검정색
    ex. document.fgColor = "#FF0000"; // red = 빨간색
    ex. document.bgColor = "#00FF00"; // green = 녹색
    ex. document.fgColor = "#FFFF00"; // 노란색
    ex. document.bgColor = "#FFFFFF"; // 흰색

 


 [ 선택자(Selector) ]
- HTML 문서에서 특정 대상(요소)을 구분(선택)하는 용도로 사용되는 속성(이름)
- id, class, 태그 등을 사용
1) id 선택자(#) : 태그 요소를 유일하게 구분할 수 있도록 지정하는 중복되지 않는 이름
                  => 해당 태그에 id 속성을 통해 이름을 지정(중복되지 않은 이름 필수!)
2) class 선택자(.) : 태그 요소를 복수개 선택할 수 있도록 중복으로 지정하는 이름
                     => 해당 태그에 class 속성을 통해 이름을 지정(중복 가능)
3) 태그 선택자(태그명) : 해당 태그를 직접 선택할 수 있도록 지정하는 이름(태그명 그대로 사용)

[ document 객체를 사용하여 특정 선택자를 갖는 요소(태그) 선택 방법 ]
< 1. document.getElementXXX() : 하나만선택(id)  
        또는 document.getElementsXXX() : 복수개선택(class, tag선택자) 메서드 활용 >
1. id 선택자 : document.getElementById("id선택자명");
2. class 선택자 : document.getElementsByClassName("class선택자명");
3. 태그 선택자 : document.getElementsByTagName("태그명");
    => 메서드 호출 시 리턴되는 객체를 통해 해당 요소(태그)에 접근하여 다양한 작업(제어) 수행 가능
    => 이 때, id 선택자를 지정하면 대상 태그에 대한 단일 객체가 리턴되며(= 유일하므로)
         class 선택자 또는 태그 선택자 지정 시 대상 태그들에 대한 복수개의 객체가 리턴됨(= 중복되므로)
         따라서, 복수개의 객체가 리턴될 경우 HTMLCollection 타입 객체로 관리되며 (배열처럼 관리됨)
                      반복문을 통해 복수개의 요소 중 각각의 요소에 차례대로 접근 가능함

// ------ id 선택자 -------

// <body> 태그 내의 HTML 태그 요소들 중 id 선택자가 "name" 인 태그 선택하여 객체로 가져오기
// => <input type="text" id="name" placeholder="id=name">
// => document.getElementById() 메서드 호출하여 해당 id 선택자를 갖는 태그 요소를 객체로 리턴받기
let nameElement = document.getElementById("name")
console.log(nameElement);// 결과: <input type="text" id="name" placeholder="id=name">
console.log("nameElement : " + nameElement); // 결과: [object HTMLInputElement](HTMLCollection 타입 객체이기 때문에 접근이 불가함.)

// nameElement 변수를 통해 해당 요소(태그)를 제어 가능 
// => 객체명.속성명 형태로 해당 요소의 속성값 접근 가능 
console.log("nameElement 의 id 선택자 : " + nameElement.id); // 결과:name id(속성값 출력)
console.log("nameElement 의 placeholder 속성값 : " + nameElement.placeholder); // 결과:id=name(placeholder 속성값 출력)

// nameElement 변수를 통해 첫번째 텍스트박스에 접근하여 입력된 텍스트 값 가져오기(value 속성 활용)
console.log(nameElement.value);  // 입력된 텍스트 출력됨.
// 해당 요소를 별도의 변수에 저장하지 않고 즉시 속성값 접근도 가능
console.log(document.getElementById("name").value); // 입력된 텍스트 출력됨.
// => 이때 ,입력된 값이 없을 경우 null값(객체가 없는 경우)이 아닌 null string 출력

// nameElement 변수를 통해 첫번째 텍스트박스에 입력된 값 변경하시오.
nameElement.value = "변경된 값";
console.log(nameElement.value);  // 텍스트박스에 입력된 값이 아닌 "변경된 값" 출력됨.

// name2라는 id 선택자 요소를 지정하여 name2Element 변수에 저장 후 선택자 요소에 입력된 텍스트 출력
let name2Element = document.getElementById("name2");
console.log(name2Element.value); // 입력된 텍스트 출력됨.

// id 선택자가 "header1"인 요소의 배경색을 "skyblue"로 변경
// => 해당요소 객체의 style 속성에 접근후 background 속성에 접근하여 skyblue로 변경
let color1 = document.getElementById("header1");
color1.style.background = "skyblue";

// id 선택자가 "header2"인 요소의 배경색을 pink로 변경
let color2 = document.getElementById("header2");
color2.style.background = "pink";


// -------- class 선택자 ------------
// class 선택자를 통해 단.일. 또는 복.수.개.의 요소 선택가능

// 클래스 선택자가 header5인 요소를 pink 색으로 변경하기.
let classColor = document.getElementsByClassName("header5");
// classColor.style.background = "pink"; 
// => TypeError: Cannot set properties of undefined (setting 'background')
// => HTMLCollection 타입은 배열과 동일하게 취급되므로 배열 접근 방법 사용가능
//    배열의 인덱스(0 ~ 배열크기-1)와 for문을 조합하여 사용
for (let i = 0; i < classColor.length; i++){
	classColor[i].style.background = "pink";
}


// -------- tag 선택자 ------------
// 태그 선택자를 통해 클래스 선택자와 마찬가지로 복수개의 태그 요소에 접근 가능
// => 클래스 선택자는 서로 다른 태그 복수개를 하나로 묶어서 관리 가능하지만
// 		태그 선택자는 동일한 태그만 묶어서 관리함. (따로 관리 불가함.)
// => class 선택자와 동일한 방식으로 접근하며, HTMLColection 객체(배열)로 관리됨
	
//h4 태그 요소들의 배경색 변경하기
let h4Element = document.getElementsByTagName("h4");
for(let h4 of h4Element){
	h4.style.background = "green";
}

 

반응형