Reputation: 417
I am having this html page ( inside the body tag ) ->
<div class="todo-container">
<ul class="todo-list">
<div class="todo">
<li>Iteasm</li>
</div>
<div class="todo">
<li>Iteasm</li>
</div>
<div class="todo">
<li>Iteasm</li>
</div>
<div class="todo">
<li>Item</li>
</div>
<div class="todo">
<li>Item</li>
</div>
<div class="todo">
<li>Item</li>
</div>
<div class="todo">
<li>Item</li>
</div>
</ul>
</div>
I am trying to querySelect the .todo-list and want to convert the innerText to array.. I tried the what is told here but is not working->
const nodelist = document.querySelector('.todo-list').innerText;
const nodelistToArray = Array.prototype.slice.call(nodelist);
console.log(nodelistToArray);
But I am getting this in the console ->
["I", "t", "e", "a", "s", "m", "↵", "I", "t", "e", "a", "s", "m", "↵", "I", "t", "e", "a", "s", "m", "↵", "I", "t", "e", "m", "↵", "I", "t", "e", "m", "↵", "I", "t", "e", "m", "↵", "I", "t", "e", "m"]
Actually I want something like this ->
["Iteasm", "Iteasm", "Iteasm"]
Any idea ?? Thanks !!!
Upvotes: 0
Views: 2119
Reputation: 4592
you can also do this
const items = [...document.getElementsByClassName("todo")].map(li => li.innerText);
console.log(items);
Upvotes: 1
Reputation: 371203
Use querySelectorAll
instead, and Array.from
:
console.log(
Array.from(
document.querySelectorAll('.todo > li'),
li => li.textContent
)
);
<div class="todo-container">
<ul class="todo-list">
<div class="todo">
<li>Iteasm</li>
</div>
<div class="todo">
<li>Iteasm</li>
</div>
<div class="todo">
<li>Iteasm</li>
</div>
<div class="todo">
<li>Item</li>
</div>
<div class="todo">
<li>Item</li>
</div>
<div class="todo">
<li>Item</li>
</div>
<div class="todo">
<li>Item</li>
</div>
</ul>
</div>
Upvotes: 2