#javascript #node.js #api #express #axios
Вопрос:
Я пытаюсь получить доступ ._id
сюда.
итак, у меня есть прослушиватель событий в качестве основного, затем я вызываю ответ от Axios в качестве метода .get.
В исключении обещания , которое есть .then
, я равняюсь тому dataUsers = response.data
, которое даст мне всех пользователей в базе данных, если я выйду из нее.
У меня есть if и else, и когда else выполняет цикл for, он зациклит всех пользователей и отобразится в таблице.
Итак, у меня есть редактировать и удалять кнопки, которая будет отображаться на циклы и будет доступна каждому пользователю, что они могут отредактировать или удалить ее, если они хотят, чтобы сделать это, я создал onclick функции/метода addEventListener внутри цикла for и в onclick функции/для EventListener функции я передаю функцию, которая определяется за пределами основных для EventListener.
Моя проблема в том, если я передаю параметр dataUsers[я].Параметр _id (параметр _id-это идентификатор, который будет в ответ ) в функцию внутри функции onclick функции, это дает мне ошибку, я написал в заголовке , что это параметр _id не определено.
но
эта ошибка устраняется, когда я создал переменную let внутри цикла for, которая равна dataUsers[i]
, и если я передам variable._id
параметр функции, который находится внутри onclick
функции, я получу свой ответ.
Может ли кто-нибудь объяснить мне, как это происходит и почему? спасибо 1000
Мой код приведен ниже :
BtnAllusers.addEventListener("click", () =gt; { document.getElementById("tbod").textContent = "" axios .get("http://localhost:3000/users") .then((response) =gt; { dataUsers = response.data; console.log(dataUsers); if (dataUsers.length === 0) { alert("Please Create a User first!!"); } else { for (i = 0; i lt; dataUsers.length; i ) { //let iddata = dataUsers[i] //console.log(iddata); //console.log(dataUsers[i]._id); let trUsers = document.createElement("tr"); let td1 = document.createElement("td"); let td2 = document.createElement("td"); let td3 = document.createElement("td"); var btn1edit = document.createElement('button') btn1edit.textContent = "EDIT" //btn1edit.addEventListener('click', function() { EDIT(iddata._id) }) var btn2delete = document.createElement('button') btn2delete.textContent = "DELETE" btn2delete.onclick = () =gt; { DELETE(dataUsers[i]._id) } //? Please Explain this line error. //btn2delete.onclick = function () { DELETE(iddata._id) } let td4 = document.createElement("td") let td5 = document.createElement("td") td1.appendChild(document.createTextNode(dataUsers[i].name)); td2.appendChild(document.createTextNode(dataUsers[i].email)); td3.appendChild(document.createTextNode(dataUsers[i].address)); td4.appendChild(btn1edit) td5.appendChild(btn2delete) trUsers.appendChild(td1); trUsers.appendChild(td2); trUsers.appendChild(td3); trUsers.appendChild(td4); trUsers.appendChild(td5); document.getElementById("tbod").appendChild(trUsers); //console.log(dataUsers[i]._id); } } }) .catch((error) =gt; { console.log(error); }); });