#javascript
Вопрос:
Хотя мой код работает, и я все это понимаю, я озадачен тем, почему parentElement работает для приведенного ниже кода.
Насколько я понимаю, родительским элементом элемента button должен быть div с классом «child-div», так почему же тогда код все еще дает мне правильный ответ для каждого «названия магазина» при нажатии кнопки «Ок»?
Любая ясность будет высоко оценена:
let addToCart = document.getElementsByClassName("button-ok");
function addToCartClicked(event) {
let button = event.target;
let shopItem = button.parentElement;
let title = shopItem.getElementsByClassName("shop-item-title")[0].innerText;
console.log(title);
}
for (let i = 0; i < addToCart.length; i ) {
let button = addToCart[i];
button.addEventListener("click", addToCartClicked);
}
<div class="body-container">
<div class="child-div">
<p class="shop-item-title">Chocolate</p>
<br />
<button class="button-ok">Okay</button>
</div>
<div class="child-div">
<p class="shop-item-title">Coke</p>
<br />
<button class="button-ok">Okay</button>
</div>
</div>
Комментарии:
1. «родительским элементом элемента button должен быть div с классом
body-container
» … что заставляет тебя так думать? Родительским элементом каждой кнопки является<div class="child-div">
элемент2. Спасибо, что прояснили это. Мне показалось, что я допустил ошибку, когда печатал его. В этом случае, если родительским элементом shopItem является «child-div», как код все еще работает? Разве это не должно работать только в том случае, если родительский элемент был «название магазина»?
3.Вы получаете
parentElement
значение, которое возвращает a<div class="child-div">
, и назначаете егоshopItem
. Затем вы получаете элементы с именем классаshop-item-title
внутри этого<div class="child-div">
элемента при вызовеshopItem.getElementsByClassName("shop-item-title")
4. О! Ладно, это идеальное объяснение. Я думаю, что это определенно помогает мне лучше понять код. Спасибо вам за вашу помощь. Это, безусловно, высоко ценится.