Что я хочу сделать: Функция, которую я хочу сделать, это сравнить и вставить данные в поле ввода, она должна проходить через столбец firstName в таблице и сравниваться с полем firstName в массиве, если какое-либо из них совпадает, тогда оно должно печатать значение в поле ввода.
Проблема: Я понятия не имею, как проверить каждую строку в столбце firstName в таблице и сравнить ее со значением firstName в массиве.
const student= ["Janet", "Weaver","Adam"];
let text = "";
student.forEach(myFunction);
student.forEach(element => console.info(element));
function myFunction(item) {
text += item + "<br>";
}
//Check the firstName column in table
//if (td = student.firstName){
//document.getElementById("janet").innerHTML = student.firstName;
//}
<!DOCTYPE html>
<html>
<style>
table,
th,
td {
border: 1px solid black;
}
</style>
<body>
<h2>User table</h2>
<table style = "width:100%">
<tr>
<th>First name</th>
<th>Age</th>
<th>Caption</th>
</tr>
<tr>
<td>Janet</td>
<td>16</td>
<td><input type = "text" id = "janet" placeholder = "Name"></input>*here should appear the name of Janet*
</td>
<tr>
<td>John</td>
<td>19</td>
<td><input type = "text" placeholder = "Name"></input>
</td>
</tr>
</table>
</body>
</html>
Вероятно, вам следует пробежаться по строкам таблицы, а затем сравнить значение первого столбца с вашим массивом.
РЕДАКТИРОВАТЬ :
document.getElementsByTagName('tr')
возвращает HTMLКоллекция, который необходимо преобразовать в Множество, чтобы вы могли использовать forEach
Array.from(document.getElementsByTagName('tr')).forEach(function(row) {
let firstTD = row.getElementsByTagName('td').item(0);
if (firstTD === null) { return; }
let firstname = firstTD.innerHTML;
// does the array contain firstname?
if (student.indexOf(firstname)>=0) {
let input_col = row.getElementsByTagName('td').item(2);
let input = input_col.getElementsByTagName('input').item(0);
input.value = firstname;
}
});
Обратите внимание, что, вероятно, было бы проще использовать идентификаторы или классы вместо подсчета тегов с помощью getElementsByTagName
...