#javascript #html #google-cloud-firestore
#javascript #HTML #google-облако-firestore
Вопрос:
как я могу получить значение выбранного элемента из firebase firestore, который я использовал innerHTML
для перечисления своих продуктов на своей странице, и у каждого из них есть кнопка, и когда я нажимаю на кнопку, я хочу получить id
название продукта, который удерживает кнопку. это мой js inneHTML
и firestore getter
database.collection("product").get().then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
const productid = doc.data().id;
const productname = doc.data().name;
productsList.innerHTML = "<div class='product-container' ><div class='course'><h2>" productname "</h2><h6>" productid "</h6><button id='editbutton' class='btn' >Edit Product</button></div></div></div>"
});
})
Комментарии:
1. Не похоже, что вы вообще что-либо сделали для обработки нажатия кнопки. Я предлагаю добавить этот код, чтобы мы могли лучше понять, где конкретно вы застряли.
2. я, безусловно, не знаю, как получить значение, и я нигде не могу его найти, вот почему я спросил @DougStevenson
3. Без написания кода для обработки нажатия у вас нет шансов получить идентификатор при нажатии кнопки. Первая проблема, с которой вы сталкиваетесь здесь, заключается в добавлении обработчика кликов. Вторая проблема заключается в том, чтобы убедиться, что у него есть доступ к идентификатору.
Ответ №1:
Вам нужно будет прикрепить прослушиватель кликов к кнопке, а затем посмотреть идентификатор, на который пользователь нажал в DOM. Есть много способов сделать это, один из которых:
productsList.addEventListener('click', function(e) {
e.preventDefault();
if (e.target.localName === 'button') {
var h6 = e.target.parentElement.getElementsByTagName("h6")[0];
alert(h6.textContent);
}
return false;
});
Рабочий пример:https://jsbin.com/pewohax/edit?html ,js, вывод
Комментарии:
1. он работает хорошо, спасибо за это, но он показывает мне эту ошибку
index.js:28 Uncaught TypeError: Cannot read property 'textContent' of undefined at HTMLDivElement.<anonymous>
это нормально?2.
index.js:28
является ли эта строкаalert(h6.textContent);
3. Похоже, что у некоторых элементов нет
h6
дочернего элемента? Если это не устранится, можете ли вы попытаться воспроизвести это на сайте, подобном jsbin, как я сделал в своем ответе? Это гарантирует, что мы оба смотрим на одно и то же.4. Да, я сделал то, что вы точно сделали
5. Можете ли вы попытаться воспроизвести его на сайте, подобном jsbin, как я сделал в своем ответе?
Ответ №2:
В дополнение к ответу Фрэнка ван Пуффелена, который я изменил e.target.localName === 'button'
на e.target.id == 'button'
bacuse, первый получит каждый элемент, который является кнопкой, поэтому вы меняете его, чтобы получить его с идентификатором кнопки или любого другого элемента.
это полный код
e.preventDefault();
if (e.target.id == 'button') {
var h6 = e.target.parentElement.getElementsByTagName("h6")[0];
alert(h6.textContent);
}
return false;
});
автор: Фрэнк ван Пуффелен
Комментарии:
1. Взять код из другого ответа и внести изменения недостаточно, чтобы затем составить новый ответ. Если вы ожидаете, что люди будут продолжать помогать вам, я бы рекомендовал оценивать их работу не только упоминанием в ответе на копирование / вставку / изменение.
2. Извините, я не знал, как вам отдать должное, я думал, что это способ, что мне делать