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

194
Visualizações
creando una extensión de cromo para cambiar el color de cada palabra

Entonces, como sugiere el título, he estado trabajando en una extensión de Chrome para cambiar el color de cada palabra en un sitio web (para ayudar con mi lectura de TDAH)

El código que tengo se ejecuta sin errores, pero no parece hacer nada. Las partes que he comentado son cuando estaba tratando de dividir cada párrafo palabra por palabra, pero me rendí un poco para simplificar temporalmente

 var paragraph = document.getElementsByTagName("p"); var words = paragraph; //.innerHTML.split(" "); var colours = ["red", "purple", "blue"]; var spans = []; for(var i = 0; i<words; i++){ var colour = colours[Math.floor(Math.random()*colours.length)] var span = "<span style='color:" + colour + ";'>" + words[i] + "</span>" spans.push(span); } //paragraph.innerHTML = spans.join(" "); words.innerHTML = spans.join(" ");
about 4 years ago · Santiago Gelvez
1 Respostas
Responde à pergunta

0

Hay varios problemas en su código.

  • getElementsByTagName() devuelve una colección de elementos (tienes que iterarlo)
  • sin .split() obtendrá contenido completo en lugar de palabras
  • La solución completa innerHtml() y split() probablemente no funcionará con HTML complejo

Me gustaría sugerirle un enfoque diferente. Encontraría cada palabra con span con expresión regular en todo el documento (o elemento) y la envolvería con una clase específica y la diseñaría con CSS. Algo como esto:

 const root = document.querySelector('p'); root.innerHTML = root.innerHTML.replace(/(^|<\/?[^>]+>|\s+)([^\s<]+)/g, '$1<span class="word">$2</span>');
 .word:nth-child(1n-1) { color: green; } .word:nth-child(2n-1) { color: red; } .word:nth-child(3n-1) { color: blue; }
 <p> some words some words some words some words some words some words </p>


Si desea colores aleatorios, puede cambiar el segundo parámetro de replace con la función que se llama en cada iteración. Algo como esto:

 const root = document.querySelector('p'); const colors = ["red", "purple", "blue"]; root.innerHTML = root.innerHTML.replace( /(^|<\/?[^>]+>|\s+)([^\s<]+)/g, (match) => { const color = colors[Math.floor(Math.random()*colors.length)]; return ` <span style="color: ${color}">${match}</span>` } );
 <p> some words some words some words some words some words some words </p>

about 4 years ago · Santiago Gelvez 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