DOM(Document Object Model)은 HTML 문서를 JavaScript로 제어하기 위한 인터페이스이다.
브라우저가 HTML 문서를 읽어 트리 구조(객체 형태)로 만들어두고, JavaScript로 이 객체들을 선택/변경할 수 있다.
// ID로 선택
const element = document.getElementById("myId");
// 클래스로 선택
const elements = document.getElementsByClassName("myClass");
// 태그로 선택
const divs = document.getElementsByTagName("div");
// CSS 선택자로 선택
const element2 = document.querySelector("#myId"); // id로 선택
const elements2 = document.querySelectorAll(".myClass"); // 클래스로 선택
// 내용 변경
element.textContent = "새로운 텍스트";
element.innerHTML = "<strong>HTML 내용</strong>";
// 스타일 변경
element.style.color = "red";
element.style.backgroundColor = "#f0f0f0";
// 클래스 조작
element.classList.add("active");
element.classList.remove("inactive");
element.classList.toggle("visible");
// 속성 조작
element.setAttribute("data-id", "123");
element.getAttribute("data-id");
element.removeAttribute("data-id");
자바스크립트 이벤트는 웹페이지에서 사용자 동작이나 브라우저 동작을 감지하고 처리하는 메커니즘이다.
버튼 클릭, 키보드 입력, 마우스 이동, 페이지 로드 등이 이벤트에 해당된다.
click, dblclick, mousedown, mouseup, mouseoverkeydown, keyup, keypressfocus, blur, change, submit, reset, select, input, cut, pasteload, unload, error, resize, scroll, abortdragstart, drag, dragend, dragenter, dragover, dragleave, dropThread는 하나의 프로세스 내에서 독립적으로 실행되는 가장 작은 실행 단위이다.
자바 프로그램이 실행될 때 기본적으로 main 스레드가 동작한다.
멀티스레드는 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 프로그래밍 기법이다.
Thread를 생성하는 방법에는 두 가지가 있다.
1) Thread 클래스를 상속받아서 구현
2) Runnable 인터페이스를 구현해서 사용
public class MyThread extends Thread {
String name;
MyThread(String name) {
this.name = name;
}
@Override
public void run() {
System.out.println(name + " Thread start!");
for (int i = 0; i < 10; i++) {
System.out.println(name + " Thread " + i);
try {
sleep(1000);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
System.out.println(name + " Thread end!");
}
}
public class ThreadTest {
public static void main(String[] args) {
System.out.println("main start@@");
MyThread myThread = new MyThread("철수");
myThread.start();
MyThread myThread2 = new MyThread("영희");
myThread2.start();
MyThread myThread3 = new MyThread("순이");
myThread3.start();
for (int i = 0; i < 10; i++) {
System.out.println("main " + i);
try {
Thread.sleep(1000);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
System.out.println("main end@@");
}
}
public class MyRunnable implements Runnable {
String name;
MyRunnable(String name) {
this.name = name;
}
@Override
public void run() {
System.out.println(name + " Thread start!");
for (int i = 0; i < 10; i++) {
System.out.println(name + " Thread " + i);
try {
Thread.sleep(1000);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
System.out.println(name + " Thread end!");
}
}
public class MyRunnableTest {
public static void main(String[] args) {
MyRunnable runnable1 = new MyRunnable("철수");
MyRunnable runnable2 = new MyRunnable("영희");
MyRunnable runnable3 = new MyRunnable("순자");
Thread t1 = new Thread(runnable1);
Thread t2 = new Thread(runnable2);
Thread t3 = new Thread(runnable3);
t1.start();
t2.start();
t3.start();
}
}
자바스크립트가 끝나고 다시 자바를 배우니까 뭔가 어색하기도 했다.
스레드를 처음 보니 신기했고, 이걸로 재밌는 것들을 많이 만들 수 있을 것 같다.
내일부터 3일 정도 쉬는데 그때 틈틈이 자바 공부를 해야겠다.
아직 기초가 부족한 것 같지만, 그래도 조금씩 실력이 느는 것 같아서 점점 재밌어진다.