I have this HTML:
JavaScript
x
13
13
1
<div class="content_section_item" data-item="">
2
<img src="">
3
<p>table</p>
4
</div>
5
<div class="content_section_item" data-item="">
6
<img src="">
7
<p>table</p>
8
</div>
9
<div class="content_section_item" data-item="">
10
<img src="">
11
<p>others</p>
12
</div>
13
How do I make a loop that takes the inner text of every p tag and puts it into the data-item attribute of its respective div parent like this:
JavaScript
1
13
13
1
<div class="content_section_item" data-item="table">
2
<img src="">
3
<p>table</p>
4
</div>
5
<div class="content_section_item" data-item="table">
6
<img src="">
7
<p>table</p>
8
</div>
9
<div class="content_section_item" data-item="others">
10
<img src="">
11
<p>others</p>
12
</div>
13
Advertisement
Answer
Loop over the divs. In each div, use querySelector()
to find the nested p
, get its contents with .textContent
, and assign that to the div’s data-item
property.
JavaScript
1
3
1
document.querySelectorAll('div.content_section_item').forEach(
2
div => div.dataset.item = div.querySelector('p').innerText
3
);
JavaScript
1
12
12
1
<div class="content_section_item" data-item="">
2
<img src="">
3
<p>table</p>
4
</div>
5
<div class="content_section_item" data-item="">
6
<img src="">
7
<p>table</p>
8
</div>
9
<div class="content_section_item" data-item="">
10
<img src="">
11
<p>others</p>
12
</div>