로컬 스토리지에서 값을 저장하고, 가져오고, 삭제하는 법을 알아봤다. 이번에는 로컬스토리지에 저장된 key와 그 값을 가져오자!
const getData = localStorage.getItem('background-color');
console.log(getData); // #FF0000
localStorage.getItem('key');
로 값을 가져오면된다.console.log(localStorage.key(0)); // user-id
console.log(localStorage.key(1)); // color
console.log(localStorage.key(2)); // font-weight
console.log(localStorage.key(3)); // user-name
console.log(localStorage.key(4)); // background-color
localStorage.key(n)
하면 key만 출력된다. console.log(localStorage.length); // 5
localStorage.length
배열의 갯수가 구해진다.let ar = new Array();
let result = '';
ar
이라는 배열을 만들었다.result
라는 변수도 하나 만들어준다.ar.push({ name: '홍길동', email: 'hong@hong.com', age: '25', pastime: '음악감상' });
ar.push({ name: '가길동', email: 'gagil@hong.com', age: '21', pastime: '영화감상' });
ar.push({ name: '나길동', email: 'nagilg@hong.com', age: '14', pastime: '미술감상' });
ar.push({ name: '다길동', email: 'dagilg@hong.com', age: '45', pastime: '운동하기' });
ar.push({ name: '마길동', email: 'magilg@hong.com', age: '38', pastime: '티비보기' });
// 배열 프로퍼티 값 찾기
console.log(ar[0]); // { name: '홍길동', email: 'hong@hong.com', age: '25', pastime: '음악감상' }
console.log(ar[0]['name']); // 홍길동
console.log(ar[0].name); // 홍길동
console.log(ar[0].email); // hong@hong.com
console.log(ar[3].name); // 다길동
.push
함수를 이용해 배열에 객체를 추가해준다.for (const i in ar) {
result += `<tr>`;
result += `<td>${ar[i].name}</td>`;
result += `<td>${ar[i].email}</td>`;
result += `<td>${ar[i].age}</td>`;
result += `<td>${ar[i].pastime}</td>`;
result += `</tr>`;
}
console.log(result);
.append(result)
하면 선택된 요소의 마지막에 새로운 요소를 추가해준다./* Append - jquery */
$('#htmlTbody').append(result);
insertAdjacentHTML
을 쓰거나, innerHTML
을 써도 된다.insertAdjacentHTML
는 따로 쓰임법을 찾아봐야한다. 파라미터가 4가지나 있어서 잘 골라 써야함const hTbody = document.querySelector('#htmlTbody');
hTbody.insertAdjacentHTML('beforeend', result);
hTbody.innerHTML = result;
empty()
쓰면된다. // Empty - jquery
$('#htmlTbody').empty();
if(hTbody.children.length !== 0) {
for (j = 0; j < hTbody.children.length; j++) {
hTbody.removeChild(hTbody.childNodes[j]);
console.log(j);
}
}
// -> 실패 자식이 한개 사라지면 0 1이 줄어들어서 연속적 실행이안됨
childNodes[0]
이 먼저 삭제되면 childNodes[1]
이 childNodes[0]
이 되어버려서 함수가 거기서 끝난다. 클릭을 총 3번해야지 완성샷처럼 딱 내가 원하는 값이 나옴...ㅋwhile(hTbody.hasChildNodes()) {
console.log('hi');
hTbody.remove();
}
// -> 실패 무한루프 발생
hTbody.innerHTML = "";
let result = '';
result += `<tr>`;
result += `<td class="align-middle">${localStorage.key(0)}</td>`;
result += `<td class="align-middle">${localStorage.getItem(localStorage.key(0))}</td>`;
result += `<td><button class="btnRemove">Remove</button></td>`;
result += `</tr>`;
hTbody.innerHTML = result;
let ar = new Array();
let result = '';
for(i=0; i<localStorage.length; i++) {
let key = localStorage.key(i);
result += `<tr>`;
result += `<td class="align-middle">${key}</td>`;
result += `<td class="align-middle">${localStorage.getItem(key)}</td>`;
result += `<td><button class="btnRemove">Remove</button></td>`;
result += `</tr>`;
// 배열에 저장
ar.push(result);
}
console.log(ar);
hTbody.innerHTML = "";
hTbody.insertAdjacentHTML('beforeend', result);
// 또는 hTbody.insertHTML(result) 위에랑 결과 똑같다
jquery를 쓰면 생각보다 간단하게 끝낼 수 있다.
내가 했던 고민에 비해 js문장은 간단했다... 한문장으로... 반복문을 다시 공부해야겠다.
innerHTML
, insertAdjacentHTML
, array 만들고, 객체에 추가하기, 로컬스토리지에서 키값 가져오기 다시 복습해보자!