* previousElementSibling() : 바로 이전 형제요소 반환 ( 실제 HTML 요소만 )
* previousSibling() : 바로 이전 형제요소 반환 (주석, 공백, 텍스트 포함)
div2를 기준으로 div1의 text를 가져오려면
<div id="div1">첫 번째 div 요소</div>
<!-- 주석: 이것은 첫 번째와 두 번째 div 사이의 주석입니다. -->
<div id="div2">두 번째 div 요소</div>
* previousElementSibling 사용
var secondDiv = document.getElementById('div2');
var prevElementSibling = secondDiv.previousElementSibling;
console.log('previousElementSibling:', prevElementSibling ? prevElementSibling.textContent : '없음');
// 출력결과
// previousElementSibling: 첫 번째 div 요소
* previousSibling 사용
var secondDiv = document.getElementById('div2');
var prevSibling = secondDiv.previousSibling;
while(prevSibling && prevSibling.nodeType != 1) { // 요소 노드가 아닐 때까지 이동
prevSibling = prevSibling.previousSibling;
}
console.log('previousSibling:', prevSibling ? prevSibling.textContent : '없음');
// 출력결과
// previousSibling: 첫 번째 div 요소
while루프로 요소노드를 잡아주지 않으면 주석을 잡게 된다.
[ 삼항연산자 ]
' 조건 ? 참일 때의 값 : 거짓일 때의 값 '
*조건 판별 기준 *
'조건' 의 값이 null , undefined , 빈 문자열 (" "), 0 , NaN, false ==> false에 해당하는 값 반환
* 활용 *
서버에서 여러 타입의 데이터를 JSON형식으로 묶어서 보내고, 화면에서는 하나의 List로 받는 경우,
리스트에서 key값으로 value를 뽑아내 사용하려는데 value값이 null 이나 공백이라면 콘솔창에 오류가 난다.
{
"userNo": 1,
"userInfo": { "name": "John", "age": 30 },
"history": [
{ "key": "value1", "key2": "value2" },
{ "key": "value3", "key2": "value4" },
{ "key": "value5", "key2": "value6" }
}
위처럼 하나의 List 내부에 key-value값으로 여러 타입의 데이터가 들어있을 때,
history의 값이 null이나 공백일 수 도 있다면,
let parsedData = dataFromServer.history ? JSON.parse(dataFromServer.history) : [];
삼항 연산자를 사용해 출력할값(배열)이 유효한지 확인 후 JSON으로 파싱하거나 빈 객체 반환.
콘솔창에 출력한 결과는 아래처럼 나온다.
console.log(parsedData);
// (배열)값이 있는 경우
[
{ "key": "value1", "key2": "value2" },
{ "key": "value3", "key2": "value4" },
{ "key": "value5", "key2": "value6" }
]
// (배열)값이 없는 경우
[]
[ Truthy / Falsy ]
* Falsy 에 해당하는 값
- false
- 0
- " " (빈문자열)
- null
- undefined
- NaN
위의 6가지를 제외하고 모두 Truthy에 해당.
if ("hello") {
console.log("This string is truthy");
} else {
console.log("This string is falsy");
}
// 출력: "This string is truthy"
if (0) {
console.log("This number is truthy");
} else {
console.log("This number is falsy");
}
// 출력: "This number is falsy"
'JavaScript > 공부공부' 카테고리의 다른 글
[JS] 고차함수 (1) map, filter, reduce (0) | 2024.06.15 |
---|---|
[JS] 비구조화 할당 (destructuring assignment) 문법 (2) | 2024.05.18 |
[JS] Select / Option 태그 (0) | 2024.03.17 |
[JS] 키보드 이벤트 (keypress / keyup / keydown ) (0) | 2024.03.15 |
[JS] jquery_jqGrid / ajax (0) | 2024.03.12 |