Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

193
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!