Ладно … оставлю это пока.
а вот мне нужно получить данные таблицы.
Достал все строки таблицы. Есть тут какой нибудь аналог Linq чтобы выкинуть в код массив списков данных?
document.getElementById('tablcont').getElementsByTagName('td')
Ладно … оставлю это пока.
а вот мне нужно получить данные таблицы.
Достал все строки таблицы. Есть тут какой нибудь аналог Linq чтобы выкинуть в код массив списков данных?
document.getElementById('tablcont').getElementsByTagName('td')
Array.from(document.querySelectorAll('#tablcont tr'))
.map(tr => Array.from(tr.querySelectorAll('td'))
.map(td => td.innerText))
А в некоторых td встречаются ссылки типа
<a target="_blank" href="бла бла бла " title="Определение">Текст документа</a>
Пробовал в последнем сделать
.map(td => [td.innerText, td.InnerHtml]))
Но второй элемент массива всегда null
и вот так не работает:
Array.from(document.querySelectorAll('#tablcont tr'))
.map(tr => Array.from(tr.querySelectorAll('td'))
.map(td => td.getElementsByTagName('a').getAttribute("href") ))
так он коллекцию вернет
innerHTML
Заработало!
Array.from(document.querySelectorAll('#tablcont tr'))
.map(tr => Array.from(tr.querySelectorAll('td'))
.map(td =>[td.innerText, [td.getElementsByTagName('a')[0]?.innerText, td.getElementsByTagName('a')[0]?.href]]))
Я бы так сделал, чтобы не париться с непонятными массивами потом:
Array.from(document.querySelectorAll('#tablcont tr'))
.map(tr => Array.from(tr.querySelectorAll('td'))
.map(td => ({
text: td.innerText,
links: Array.from(td.querySelectorAll('a'))
.map(a => ({
href: a.href,
text: a.innerText
}))
})))
Прикольно. Спасибо.