html 기본 코드 작성
night 버튼만들기
onclick으로 버튼이 클릭될 때 마다 효과 적용
array 만들어서 반복문으로 출력하기
<!DOCTYPE html>
<html lang="ko">
<head>
<title>Document</title>
<style>
a{
text-decoration: none;
}
</style>
</head>
<body>
<h1><a href="index.html">web</a></h1>
<input type="button" value="night" onclick="
let aTagSearch = document.querySelectorAll('a');
// console.log(aTagSearch);
if (this.value == 'night'){
document.querySelector('body').style.backgroundColor='black';
document.querySelector('body').style.color='white';
this.value = 'day';
for(let i=0; i<aTagSearch.length; i++){
aTagSearch[i].style.color = 'white';
}
} else {
document.querySelector('body').style.backgroundColor='white';
document.querySelector('body').style.color='black';
this.value = 'night';
for(let i=0; i<aTagSearch.length; i++){
aTagSearch[i].style.color = 'black';
}
}">
<ol>
<li><a href="1.html">html</a></li>
<li><a href="2.html">css</a></li>
<li><a href="3.html">js</a></li>
</ol>
<h2>welcome</h2>
Lorem ipsum dolor sit amet consectetur adipisicing elit.
<script>
let topics = ['html', 'css', 'js'];
for (let i=0; i<topics.length; i++){
// document.write('<li>'+topics[i]+'</li>');
document.write (`<li>${topics[i]}</li>`);
}
</script>
</body>
</html>
if (this.value === 'night'){
this.value = 'day';
document.querySelector('body').style.backgroundColor='white';
document.querySelector('body').style.color='black';
document.querySelector('#a1').style.color='black';
document.querySelector('#a1').style.color='black';
document.querySelector('#a2').style.color='black';
document.querySelector('#a3').style.color='black';
document.querySelector('#a4').style.color='black';
document.querySelector('#a5').style.color='black';
}
document.querySelectorAll('a');
페이지의 'a'태그를 모두 찾아서 NodeList 형태로 반환한다.
인덱스를 사용해서 요소를 끄집어내서 사용할 수 있다.
let aSelectAll = document.querySelectorAll('a');
if (this.value == 'night'){
this.value = 'day';
document.querySelector('body').style.backgroundColor='white';
document.querySelector('body').style.color='black';
for (let i = 0; i < aSelectAll.length; i++){
aSelectAll[i].style.color='white';
}
}
아래와 같은 버튼이 2000개 있다.
버튼을 클릭하면 backgroundColor가 red로 변경되는데,
let allClick = document.querySelectorAll('input');
for(let i=0; i<allClick.length; i++){
allClick[i].click();
}
let allClick = document.querySelectorAll('input');
for(let i=0; i<allClick.length; i++){
allClick[i].click();
}
// 또 다른 답
let inputs = document.querySelectorAll('input');
for(let i=0; i<inputs.length; i=i+1){
if (inputs[i].value > 100) {
inputs[i].click()
}
}
// 100보다 크고 200보다 작은 버튼만 클릭
let inputs = document.querySelectorAll('input');
for(let i=0; i<inputs.length; i=i+1){
if (inputs[i].value > 100 && inputs[i].value < 200) {
inputs[i].click()
}
}
// if문에 i를 가지고 해도 됨
let inputs = document.querySelectorAll('input');
for(let i=0; i<inputs.length; i=i+1){
if (i > 100 && i < 200) {
inputs[i].click()
}
}
// 논리연산자를 사용하지 않는 코드
let inputs = document.querySelectorAll('input');
for(let i=0; i<inputs.length; i=i+1){
if(inputs[i].value>100){
if(inputs[i].value<200){
inputs[i].click();
}
}
}
: 함수는 서로 연관된 코드를 그루핑해서 이름을 붙인 상자와 같다.
내장함수(built in fuction)를 잘 사용해서 프로그램을 만들어간다.
코드에 일정한 패턴이 보이면 함수화를 시키는 것이 좋다.
아래와 같은 결과가 출력되었다.
어떤 부분을 함수화하면 좋을까?
<script>
function abc() {
console.log('a');
console.log('b');
console.log('c');
}
for (let i = 1; i < 5; i++) {
console.log(i);
abc();
}
</script>
a, b, c를 출력하는 부분을 함수화하였다.
console.log(1), console.log(2), console.log(3)으로 출력할 수도 있지만,
규칙적으로 1씩 증가해서 출력되기 때문에
반복문을 사용해서 console.log(i)를 찍고 abc() 함수를 호출하도록 만들었다.
함수 호출 시 인자로 넣으면 함수의 매개변수로 전달된다.
매개변수로 전달한다면 함수 안에 선언되어있는 부분은 삭제해야 함수가 잘 동작한다.
return : 함수를 호출하면 그 자리에 return 값이 반환된다.
아래 코드에서는 rate의 값이 반환된다고 생각하면 된다.
Console.log는 단순히 값을 찍어내는 출력을 위한 함수이다.
Console.log(vatRateCalc(1000, 0.1))
<h1>VAT</h1>
<script>
console.log(1);
console.log(2);
console.log(3);
function vatRateCalc(price, vatRate) { // 매개변수, parameter
// let price = 1000;
// let vatRate = 0.1;
let rate = price * vatRate;
// console.log(rate);
return rate;
}
// vatRateCalc(2000, 0.1); // 인자, argument
console.log(vatRateCalc(1000,0.1));
</script>
<script>
function night() {
document.querySelector('body').style.backgroundColor = 'white';
document.querySelector('body').style.color = 'black';
let aSelectAll = document.querySelectorAll('a');
for (let i = 0; i < aSelectAll.length; i++) {
aSelectAll[i].style.color = 'black';
}
}
function day() {
document.querySelector('body').style.backgroundColor = 'black';
document.querySelector('body').style.color = 'white';
let aSelectAll = document.querySelectorAll('a');
for (let i = 0; i < aSelectAll.length; i++) {
aSelectAll[i].style.color = 'white';
}
}
</script>
<input type="button" value="night" onclick="
if (this.value === 'night'){
this.value = 'day';
night();
} else {
this.value = 'night';
day();
}">
쉼표 연산자는 각각의 피연산자를 왼쪽에서 오른쪽 순서로 평가하고, 마지막 연산자의 값을 반환
var a, b, c;
a = b = 3; c = 4;
console.log(a);
var x, y, z;
x = (y = 5, z = 6);
console.log(x);
객체지향은 서로 연관된 변수와 함수를 그루핑해서 이름을 붙인 것이다.
<html>
<body>
<h1>Object</h1>
<script>
let student = ['nagyeom', 'leeng'];
console.log(student[0]);
console.log(student[1]);
let member = {developer:'gyeomveloper', designer:'gyeomsigner'};
// 객체는 중괄호로 시작해서 중괄호로 끝난다.
console.log(member.designer, member.developer);
// 배열은 순서가 있는 데이터
// 객체는 role이 다르다.
let leenagyeom = {name:'leenagyeom', city:'daegu', job:'developer'};
//객체는 이름으로 식별되는 배열과 같다.
console.log(leenagyeom.name);
</script>
</body>
</html>
comma 연산자와 자바스크립트 객체에 대해서 새롭게 알게 되었다.
계속해서 반복하다보니 의식의 흐름대로 코드를 작성할 수 있게 된 것 같다.
html 기본 구조 부터 a태그를 포함한 h1제목과 ol, li 리스트를 만들고,
다크모드 토글 버튼도 만들어서 내용과 배경색이 반전이 되게 하는 것 까지
의식의 흐름을 하나로 이어지게 해서 복습하는 게 중요한 것 같다.