#javascript #html #cookies
#javascript #HTML #файлы cookie
Вопрос:
Я работаю над проектом веб-программирования, и мне нужна помощь с одной из частей, связанных с интернет-файлами cookie. На веб-странице есть таблица со списком всех участников веб-страницы, и я хотел бы получить доступ к электронной почте каждого из них. Однако я перепробовал много способов сделать это, и я думаю, что таблица не может быть найдена (когда я печатаю переменную, содержащую ее, она выводит null). Тогда я был бы признателен, если бы кто-нибудь мог предложить хороший способ получить доступ к HTML-таблице и получить некоторые из ее записей. Я оставляю здесь, как код HTML-таблицы и функция JavaScript для получения из нее данных.
Код таблицы:
<table id="student-info">
<tr>
<th>Student</th>
<th>Name</th>
<th>Surname</th>
<th>Email</th>
<th>Contact</th>
</tr>
<tr>
<td><img class="student-image" src="images/Student1.jpg" alt="Tarra Theisen profile picture"></td>
<td>Tarra</td>
<td>Theisen</td>
<td>tarratheisen@gmail.com</td>
<td><button class = "send-button"><i class="far fa-paper-plane"></i></button></td>
</tr>
<tr>
<td><img class="student-image" src="images/Student2.jpeg" alt="Patrick Beverley profile picture"></td>
<td>Patrick</td>
<td>Beverley</td>
<td>patrickbev@gmail.com</td>
<td><button class = "send-button"><i class="far fa-paper-plane"></i></button></td>
</tr>
</table>
Код функции в JS:
function showTableData() {
var myTab = document.getElementById('student-info');
// LOOP THROUGH EACH ROW OF THE TABLE AFTER HEADER.
for (i = 1; i < myTab.rows.length; i ) {
// GET THE CELLS COLLECTION OF THE CURRENT ROW.
var objCells = myTab.rows.item(i).cells;
// LOOP THROUGH EACH CELL OF THE CURENT ROW TO READ CELL VALUES.
for (var j = 0; j < objCells.length; j ) {
alert(objCells.item(j).innerHTML);
}
}
}
Ответ №1:
Лучшим подходом было бы присвоить класс полей электронной почты, а затем извлечь эти поля.
(function showTableData() {
var email = [];
var arr = document.getElementsByClassName("email");
for (let i = 0; i < arr.length; i ) {
email.push(arr[i].innerHTML);
}
console.log(email);
})();
<table id="student-info">
<tr>
<th>Student</th>
<th>Name</th>
<th>Surname</th>
<th>Email</th>
<th>Contact</th>
</tr>
<tr>
<td>
<img class="student-image" alt="Tarra Theisen profile picture" />
</td>
<td>Tarra</td>
<td>Theisen</td>
<td class="email">tarratheisen@gmail.com</td>
<td>
<button class="send-button">
<i class="far fa-paper-plane"></i>
</button>
</td>
</tr>
<tr>
<td>
<img class="student-image" alt="Patrick Beverley profile picture" />
</td>
<td>Patrick</td>
<td>Beverley</td>
<td class="email">patrickbev@gmail.com</td>
<td>
<button class="send-button">
<i class="far fa-paper-plane"></i>
</button>
</td>
</tr>
</table>
Ответ №2:
Ваш код, похоже, работает нормально для меня. Если вы хотите получить только электронное письмо, вы знаете, что его индекс равен 3, поэтому просто возьмите его таким образом
function showTableData() {
var myTab = document.getElementById('student-info');
var emailList = document.getElementById('emails');
for (i = 1; i < myTab.rows.length; i ) {
var objCells = myTab.rows.item(i).cells;
for (var j = 0; j < objCells.length; j ) {
if (j === 3) {
var emailText = objCells.item(j).innerHTML;
var email = document.createElement('li');
email.appendChild(document.createTextNode(emailText));
emailList.appendChild(email);
}
}
}
}
showTableData();
<table id="student-info">
<tr>
<th>Student</th>
<th>Name</th>
<th>Surname</th>
<th>Email</th>
<th>Contact</th>
</tr>
<tr>
<td><img class="student-image" src="images/Student1.jpg" alt="Tarra Theisen profile picture"></td>
<td>Tarra</td>
<td>Theisen</td>
<td>tarratheisen@gmail.com</td>
<td><button class = "send-button"><i class="far fa-paper-plane"></i></button></td>
</tr>
<tr>
<td><img class="student-image" src="images/Student2.jpeg" alt="Patrick Beverley profile picture"></td>
<td>Patrick</td>
<td>Beverley</td>
<td>patrickbev@gmail.com</td>
<td><button class = "send-button"><i class="far fa-paper-plane"></i></button></td>
</tr>
</table>
<ul id="emails">
Emails
</ul>