Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

129
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda