Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

128
Visualizações
Envuelva todas las palabras individuales en una etiqueta de intervalo en función de su primera letra

Estoy tratando de envolver cada palabra individual en una página web en una etiqueta para poder diseñarlas individualmente según su letra inicial.

Encontré este método de envolver cada palabra en una etiqueta de intervalo individualmente, pero no puedo encontrar la manera de variar la clase según la primera letra de la palabra.

 let e = document.getElementById('words'); e.innerHTML = e.innerHTML.replace(/(^|<\/?[^>]+>|\s+)([^\s<]+)/g, '$1<span class="word">$2</span>');
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Lo que está tratando de lograr no se puede hacer con expresiones regulares si desea hacer referencia a las palabras individuales.

Escribí un pequeño fragmento que usa document.querySelector() en su lugar

La propiedad outsideText en el objeto selector de consulta devuelve una cadena de texto sin formato que luego se convierte en una matriz con la función split()

Luego, simplemente recorre la matriz y agrega la etiqueta de estilo y, para obtener la primera letra, he usado la función substring()

 const words = document.querySelector("#words").outerText.split(" "); const wordsDiv = document.querySelector("#words") wordsDiv.innerHTML = "" words.map((el) => { wordsDiv.innerHTML += `<span class="${el.substring(0, 1)}">${el}</span> ` })
 <div id="words">red green blue orange</div>

about 4 years ago · Juan Pablo Isaza Relatório

0

Prueba esto:

 let e = document.getElementById('words'); // Create array with words let words = e.innerHTML.split(' '); // Object with CSS classes and corresponding letter const classes = { a: 'class-one', b: 'class-two', // and so on } // Return array with the new strings words = words.map(word => { const firstLetter = word.substring(0,1); return `<span class="${classes[firstLetter]}">${word}</span>`; }); // Join the array and update the DOM e.innerHTML = words.join(' ');

Aquí está pasando lo siguiente:

  • Las palabras están siendo separadas por un espacio, creando una matriz;
  • La constante de classes debe recibir, como en el ejemplo, la correspondencia de cada letra con su clase;
  • En la función del método map , se está devolviendo la primera letra de la palabra y se accede al objeto de clases con esa letra;
  • Finalmente hacemos un join para unir todos los textos separándolos con un espacio.

Recordando que si hay más de un espacio entre palabras, se producirán inconsistencias, ya que la primera letra será un espacio.

about 4 years ago · Juan Pablo Isaza Relatório

0

Desde la referencia string.prototype.replace , también puede agregar una función de reemplazo al método, en lugar de una cadena. La función de reemplazo tiene esta forma .

Entonces, si no malinterpreté tu problema, puedes hacer algo similar a esto:

 let e = document.getElementById('words'); e.innerHTML = e.innerHTML.replace(/(^|<\/?[^>]+>|\s+)([^\s<]+)/g, function(match, p1, p2) { const myClasses = { a: "aword", b: "bword", ... } return `${p1}<span class="${myClasses[p2[0]]}">${p2}</span>' });
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda