Вы можете использовать document.getElementByClassName
, это вернет массив как объект, точнее HTMLCollection .
Результаты будут возвращены в порядке документа (нисходящий, обратный поиск по глубине).
Например, если вы выполните document.The getElementsByClassName('name');
, это будет верните этот порядок:
<h2 class ="name">Jack Bauer</h2>
<h2 class ="name">Clarice Sterling</h2>
Таким образом, используя это для всех ваших классов, вы создаете JSON, как и вы sh.
Предполагая, что у вас есть такое же количество элементов, которое вы можете сделать что-то вроде этого:
const personalDatas = document.getElementsByClassName('personal-datas');
const names = document.getElementsByClassName('name');
const births = document.getElementsByClassName('date-of-birth');
const companies = document.getElementsByClassName('company');
const statuses = document.getElementsByClassName('status');
const countries = document.getElementsByClassName('country');
const finalJson = {};
for (let i = 0; i < personalDatas.length; ++i) {
const key = 'personal-datas' + i;
finalJson[key] = {};
finalJson[key]['name'] = names[i].innerHTML;
finalJson[key]['date-of-birth'] = births[i].innerHTML;
finalJson[key]['company'] = companies[i].innerHTML;
finalJson[key]['status'] = statuses[i].innerHTML;
finalJson[key]['country'] = countries[i].innerHTML;
}
console.log(JSON.stringify(finalJson, null, 2));
<div class ="personal-datas">Datas</div>
<h2 class ="name">Jack Bauer</h2>
<div class ="date-of-birth">february the 9th 1984</div>
<h3 class ="company">Jane Ventures</h3>
<h5 class ="status">married</h5>
<p class ="country">Canada</p>
<div class ="personal-datas">Datas</div>
<h2 class ="name">Clarice Sterling</h2>
<div class ="date-of-birth">3rd of March 1981</div>
<h3 class ="company">FBI</h3>
<h3 class ="chasing">Buffalo Bill</h3>
<h3 class ="skill">Profiler</h3>
<h5 class ="status">Bachelor</h5>
<p class ="country">USA</p>