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

162
Visualizações
¿Cómo evitar generar colores demasiado negros al azar en JavaScript?

Cada vez que hago clic en un botón en el navegador, muestra un color aleatorio junto con su código rgb (r, g, b). Hice 3 variables r , g y b que producen números aleatorios del 0 al 255 usando la lógica básica de Math.floor(Math.random()*256) ;

Mi problema es que a veces los colores aleatorios generados son demasiado oscuros y el código rgb que se muestra junto con ellos es de color negro.

Intenté escribir una lógica que cada vez que r+g+b < 300, alterne la clase del elemento h1 que tiene una propiedad de color blanco.

 const h1 = document.querySelector('h1'); const button = document.querySelector("button"); h1.classList.add('h1'); //if (r+g+b < 500) button.addEventListener('click', () => { changeColor(); }); const changeColor = (() => { const newColor = randomColor(); document.body.style.backgroundColor = newColor; h1.innerText = newColor; } ); const randomColor = (() => { const r = Math.floor(Math.random() * 256); const g = Math.floor(Math.random() * 256); const b = Math.floor(Math.random() * 256); return `rgb(${r}, ${g}, ${b})`; })

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Una forma simple es hacer que las variables r, g, b tengan un alcance más amplio para que puedan usarse para hacer su prueba <500 en el mismo lugar donde cambia el color de fondo.

 const h1 = document.querySelector('h1'); const button = document.querySelector("button"); let r, g, b; h1.classList.add('h1'); button.addEventListener('click', () => { changeColor(); }); const changeColor = (() => { const newColor = randomColor(); document.body.style.backgroundColor = newColor; if (r + g + b < 500) h1.style.color = 'white'; else h1.style.color = 'black'; h1.innerText = newColor; }); const randomColor = (() => { r = Math.floor(Math.random() * 256); g = Math.floor(Math.random() * 256); b = Math.floor(Math.random() * 256); return `rgb(${r}, ${g}, ${b})`; })
 <h1></h1> <button>click me</button>

about 4 years ago · Juan Pablo Isaza Relatório

0

Bueno, tienes que poner tu si dentro de esta función (randomColor) y cuando se generan los valores para (r,g,b) tu si para los nuevos valores se comprobará de nuevo cada vez que cambien los valores.

 const randomColor = (() => { const r = Math.floor(Math.random() * 256); const g = Math.floor(Math.random() * 256); const b = Math.floor(Math.random() * 256); if(r+g+b < 300){ h1.classList.add('h1'); } return `rgb(${r}, ${g}, ${b})`; })
about 4 years ago · Juan Pablo Isaza Relatório

0

Prueba esto:

 const changeColor = (() => { const newColor = randomColor(); document.body.style.backgroundColor = newColor[1]; h1.innerText = newColor[1]; const sumColor = newColor[0]; if (sumColor < 300){ h1.style.color = white; }else{ h1.style.color = black; } } ); const randomColor = (() => { const r = Math.floor(Math.random() * 256); const g = Math.floor(Math.random() * 256); const b = Math.floor(Math.random() * 256); const sum = r+g+b; return [sum,`rgb(${r}, ${g}, ${b})`]; //returning array })

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