Нацельтесь на id
div и добавьте к ним прослушиватель кликов. Внутренний обработчик получает идентификатор с помощью e.target.innerText
document.querySelectorAll("#tab div.userid").forEach(elem => elem.addEventListener("click", function(e) {
let xmlhttp = new XMLHttpRequest();
let url = `https://jsonplaceholder.typicode.com/users/${ e.target.innerText}`;
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
user = JSON.parse(this.responseText);
//handle your user data here
})
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
Следующий пример находит пользователей в массиве и отображает его данные. Здесь не делается никаких запросов, поскольку данные уже доступны в массиве.
var users = [];
function getUsers() {
let xmlhttp = new XMLHttpRequest();
let url = "https://jsonplaceholder.typicode.com/users";
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
users = JSON.parse(this.responseText);
let tableString = ` <tr> <th > Name </th> <th > id </th> </tr>`
users.forEach(obj => {
tableString += ` <tr>
<td>
<div class="name">${obj.name}</div>
</td>
<td>
<div class="userid">${obj.id}</div>
</td>
</tr>`
});
document.getElementById("tab").innerHTML = tableString;
document.querySelectorAll("#tab div.userid").forEach(elem => elem.addEventListener("click", function(e) {
getDataOfUser(e.target.innerText)
}))
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
function getDataOfUser(id) {
let user = users.find(useR => useR.id == id);
document.querySelector(".info-user").innerHTML = `Info of user:
Name:${user.name}<br>
Email:${user.email}<br>
Phone:${user.phone}<br>
Website:${user.website}<br>
`
}
getUsers();
#tab td{
border:1px solid black
}
.userid{
cursor:pointer;
}
Click on id to get the user data
<table id="tab">
<table>
<div class="info-user">
</div>