данные не определены в элементе HTMLButtonElement.Получить документ

# #javascript #html #firebase #forms #google-cloud-firestore

Вопрос:

Я получил эту ошибку, когда при нажатии кнопки из одной строки моей таблицы

 data is not defined at HTMLButtonElement.GetADocument  

Что я хотел сделать, так это когда кнопка нажата, она возьмет идентификатор строки из firestore и отобразит подробную информацию о строке в моей форме.

Это функция, которую необходимо выполнить после нажатия кнопки:

 async function GetADocument(){  var ref = doc(firestore, "ordered", data.id);  const docSnap = await getDoc(ref)   if(docSnap.exists()){  boxEmail.value = docSnap.data().paidby;  boxDate.value = docSnap.data().boughtAt;  boxName.value = docSnap.data().cetegory;  boxQty.value = docSnap.data().amount;  boxAddress.value = docSnap.data().paidby;  boxCode.value = docSnap.data().code;  boxEstimation.value = docSnap.data().estimationDate;  boxStatus.value = docSnap.data().status;  }  else{  alert('No Document found')  }  }  

Это строка таблицы, содержащая кнопку, которая получит идентификатор из магазина firestore:

 const q = query(collection(firestore, "ordered"));  const unsubscribe = onSnapshot(q, (querySnapshot) =gt; {  querySnapshot.forEach((doc) =gt; {  let id = doc.id;  let data = doc.data();   const list = document.getElementById("tbody1");  const row = document.createElement("tr");   row.innerHTML  = `   lt;td class="grid-item"gt;${(data.paidby)}lt;/tdgt;  lt;td class="grid-item"gt;No. ${(data.numbur)}, Simpang ${(data.spg)}, Jalan ${(data.jln)}, ${(data.district)}, ${(data.code)}lt;/tdgt;  lt;td class="grid-item"gt;${(data.product)} (${(data.amount)})lt;/tdgt;  lt;td class="grid-item"gt;${(data.status)}lt;/tdgt;  lt;td class="grid-item"gt;  lt;button type="button" id="viewDetail" class="btn btn-primary btn-primary my-2 ml-2" data-id="${id}"gt;View Detailslt;/buttongt;  lt;/tdgt;  `;   list.appendChild(row);   let detailView = document.getElementById('viewDetail');   detailView.addEventListener('click', GetADocument);  });    });  

И, это отображение формы:

 lt;formgt;  lt;div class="form-group row"gt;  lt;label for="emailBox" class="col-sm-2 col-form-label"gt;User's Emaillt;/labelgt;  lt;div class="col-sm-10"gt;  lt;input type="email" readonly class="form-control" id="emailBox" aria-describedby="emailHelp" placeholder="Enter email"gt;  lt;/divgt;  lt;/divgt;  lt;div class="form-group row"gt;  lt;label for="dateBox" class="col-sm-2 col-form-label"gt;Bought Atlt;/labelgt;  lt;div class="col-sm-10"gt;  lt;input type="text" readonly class="form-control" id="dateBox" placeholder="Bought Date"gt;  lt;/divgt;  lt;/divgt;  lt;div class="form-group row"gt;  lt;label for="nameBox" class="col-sm-2 col-form-label"gt;Item Boughtlt;/labelgt;  lt;div class="col-sm-10"gt;  lt;input type="text" readonly class="form-control" id="nameBox" placeholder="Item Bought"gt;  lt;/divgt;  lt;/divgt;  lt;div class="form-group row"gt;  lt;label for="qtyBox" class="col-sm-2 col-form-label"gt;Quantitylt;/labelgt;  lt;div class="col-sm-10"gt;  lt;input type="text" readonly class="form-control" id="qtyBox" placeholder="Quantity"gt;  lt;/divgt;  lt;/divgt;  lt;div class="form-group row"gt;  lt;label for="addressBox" class="col-sm-2 col-form-label"gt;Addresslt;/labelgt;  lt;div class="col-sm-10"gt;  lt;input type="text" readonly class="form-control" id="addressBox" placeholder="Address"gt;  lt;/divgt;  lt;/divgt;  lt;div class="form-group row"gt;  lt;label for="codeBox" class="col-sm-2 col-form-label"gt;Address Codelt;/labelgt;  lt;div class="col-sm-10"gt;  lt;input type="text" readonly class="form-control" id="codeBox" placeholder="Address Code"gt;  lt;/divgt;  lt;/divgt;  lt;div class="form-group row"gt;  lt;label for="estimationBox" class="col-sm-2 col-form-label"gt;Estimation Datelt;/labelgt;  lt;div class="col-sm-10"gt;  lt;input type="text" readonly class="form-control" id="estimationBox" placeholder="Estimation Date"gt;  lt;/divgt;  lt;/divgt;  lt;div class="form-group row"gt;  lt;label for="statusBox" class="col-sm-2 col-form-label"gt;Statuslt;/labelgt;  lt;div class="col-sm-10"gt;  lt;input type="text" readonly class="form-control" id="statusBox" placeholder="Status"gt;  lt;/divgt;  lt;/divgt;  lt;button type="submit" class="btn btn-primary"gt;Update Status to Deliveredlt;/buttongt;  lt;button type="submit" class="btn btn-danger"gt;Delete Recordlt;/buttongt;  lt;/formgt;  

And how I declare the inputbox in the JavaScript is like this:

 let boxEmail = document.getElementById('emailBox');  let boxDate = document.getElementById('dateBox');  let boxName = document.getElementById('namaeBox');  let boxQty = document.getElementById('qtyBox');  let boxAddress = document.getElementById('addressBox');  let boxCode = document.getElementById('codeBox');  let boxEstimation = document.getElementById('estimationBox');  let boxStatus = document.getElementById('statusBox');  

Я думаю, что что-то не так в моей декларации идентификатора, которая находится во втором коде data-id="${id}" , а также в том, как я ссылаюсь на идентификатор данных. Кто-нибудь, пожалуйста, может мне помочь?