親要素、子要素、兄弟要素を取得する
<div class="wrapper">
<ul id="box1">
<li id="list1_1" class="list">List 1-1</li>
<li id="list1_2" class="list">List 1-2</li>
<li id="list1_3" class="list">List 1-3</li>
</ul>
<ul id="box2">
<li id="list2_1" class="list">List 2-1</li>
<li id="list2_2" class="list">List 2-2</li>
<li id="list2_3" class="list">List 2-3</li>
</ul>
</div>
クリックした「 li 」要素から見てJavascriptで各要素を取得します。
親要素の取得
クリックした li 要素の親要素の id を取得します。
window.addEventListener('load', () => {
const list = document.getElementsByClassName('list');
for (i = 0; i < list.length; i++) {
list[i].addEventListener("click", function() {
console.log(this.parentNode.id)
});
}
});
クリックした id box1 の子要素の li タグの親要素と隣あう次の要素(id box2)を取得します。
次の親要素がない場合は、「 Uncaught TypeError 」が発生します。
window.addEventListener('load', () => {
const list = document.getElementsByClassName('list');
for (i = 0; i < list.length; i++) {
list[i].addEventListener("click", function() {
console.log(this.parentNode.nextElementSibling.id)
});
}
});
クリックした id box2 の子要素の li タグの親要素と隣あう前の要素(id box1)を取得します。
window.addEventListener('load', () => {
const list = document.getElementsByClassName('list');
for (i = 0; i < list.length; i++) {
list[i].addEventListener("click", function() {
console.log(this.parentNode.previousElementSibling.id)
});
}
});
子要素の取得
クリックした li タグ(id=box1 の子要素)の親要素の次の親要素(id=box2)の子要素を取得します。
id=box2 の li タグを句リクした場合は、次の親要素がないため、「 Uncaught TypeError 」が発生します。
window.addEventListener('load', () => {
const list = document.getElementsByClassName('list');
for (i = 0; i < list.length; i++) {
list[i].addEventListener("click", function() {
let next_box_children = this.parentNode.nextElementSibling.children
Array.from(next_box_children).forEach(function(e){
console.log(e)
})
});
}
});
兄弟要素の取得
id=list1_2 の li タグをクリックすると前後の兄弟要素(id=list1_1, id=list1_3)の要素を取得します。
window.addEventListener('load', () => {
const ele = document.getElementById('list1_2');
ele.addEventListener('click', function(){
console.log(this.previousElementSibling.id)
console.log(this.nextElementSibling.id)
})
});