Trochę kombinowane, ale możesz zrobić to tak:
- pobrać elementy li
- wyciągnąć z nich tekst i rozbić na litery przez split()
- wyzerować zawartość w li
Te trzy rzeczy robi pierwsza pętla w przykładzie.
- przeilterować przez wszystkie słowa a następnie litery
- utworzyć spany z tekstem (pojedynczymi literami)
- dodać do odpowiednich li
Te trzy rzeczy robi druga petla
Randomowe kolory do literek dodane są tylko po to żeby pokazać, że to osobne spany.
const colors = ['red','blue','black','green'];
const lis = document.querySelectorAll(".menu-inf ul li");
const words = [];
lis.forEach(li => {
words.push(li.textContent.split(''));
li.innerHTML = '';
});
words.forEach((word,index) => {
word.forEach(letter => {
let span = document.createElement('span');
span.textContent = letter;
randomIndex = Math.floor(Math.random() * 5);
span.style.color = colors[randomIndex];
lis[index].append(span);
})
})