Как извлечь гиперссылки из ячеек таблицы в строке / столбце цикла

Как извлечь гиперссылки из ячеек таблицы в цикле строки / столбца

У меня есть функция JS, которая записывает содержимое таблицы на странице в файл CSV.

Однако всякий раз, когда я сталкиваюсь с ячейкой таблицы, содержащей гиперссылку (например, {amp}lt;td{amp}gt;{amp}lt;a href="https://www.example.com{amp}gt;Cell Value 1{amp}lt;/a{amp}gt;{amp}lt;/td{amp}gt; ), мне нужно напишите значение href (в данном случае https://www.example.com ), а не текст html (в данном случае значение ячейки 1)

Код ниже показывает функцию, которая перебирает строки, а затем столбцы. У меня нет проблем с созданием CSV таким способом, но я {amp}lt;a href=""{amp}gt; реализовать «проверку» для {amp}lt;a href=""{amp}gt; значений.

 {amp}lt;script{amp}gt; function downloadCSV() { var table = document.getElementById("table-example"); // Array of rowData arrays var results = []; // holds data from each table row var rowData; //iterate through rows, skipping header for (var i = 1, row; row = table.rows[i]; i  ) { rowData = []; //iterate through columns for (var j = 0, col; col = row.cells[j]; j  ) { // Checking for href and extracing link let link = $(this).find('a').attr('href'); console.log(link); if () { .... } else { rowData.push(col.textContent); } } results.push(rowData); } 

При необходимости образец таблицы:

 {amp}lt;button onClick="downloadCSV()"{amp}gt;Download CSV{amp}lt;/button{amp}gt; {amp}lt;table id="table-example"{amp}gt; {amp}lt;thead{amp}gt; {amp}lt;tr{amp}gt; {amp}lt;th{amp}gt;Name{amp}lt;/th{amp}gt; {amp}lt;th{amp}gt;Position{amp}lt;/th{amp}gt; {amp}lt;th{amp}gt;Office{amp}lt;/th{amp}gt; {amp}lt;th{amp}gt;Age{amp}lt;/th{amp}gt; {amp}lt;th{amp}gt;Start date{amp}lt;/th{amp}gt; {amp}lt;th{amp}gt;Salary{amp}lt;/th{amp}gt; {amp}lt;/tr{amp}gt; {amp}lt;/thead{amp}gt; {amp}lt;tbody{amp}gt; {amp}lt;tr{amp}gt; {amp}lt;td{amp}gt;{amp}lt;a href="https://www.example.com"{amp}gt;Tiger Nixon{amp}lt;/a{amp}gt;{amp}lt;/td{amp}gt; {amp}lt;td{amp}gt;System Architect{amp}lt;/td{amp}gt; {amp}lt;td{amp}gt;Edinburgh{amp}lt;/td{amp}gt; {amp}lt;td{amp}gt;61{amp}lt;/td{amp}gt; {amp}lt;td{amp}gt;2011/04/25{amp}lt;/td{amp}gt; {amp}lt;td{amp}gt;$320,800{amp}lt;/td{amp}gt; {amp}lt;/tr{amp}gt; {amp}lt;/tbody{amp}gt; {amp}lt;/table{amp}gt; 

Моя цель состояла в том, чтобы реализовать if-else, где я бы добавил значение href в массив, если в ячейке таблицы он был, или добавил бы текст html, если нет. Однако переменная link всегда не определена, даже если для итераций столбца, который, как мне известно, есть {amp}lt;a href=""{amp}gt; .

Редактировать :

Следуя предложению Таплара, что использование $(this) в цикле for было ошибочным, я пришел к следующему решению:

  for (var j = 0, col; col = row.cells[j]; j  ) { // Checking for href and extracing link var links = col.getElementsByTagName('a'); if (links.length {amp}gt; 0) { var cellData = links[0].getAttribute('href'); } else { var cellData = col.textContent; } rowData.push(cellData); 
Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector