Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Como atualizar o valor do input range

Pessoal, tudo bem , alguém poderia me ajudar urgente, tenho uma trabalho para terça e estou totalmente perdido, o trabalho é este.

Construa, utilizando HTML, CSS e JavaScript puro, uma aplicação para a visualização de cores a partir da escala RGB.

  • você cria 3 input do tipo range
  • 3 input normal desabilitada que vai mostrar o valor quando mexe o input range
  • uma div que mostra a cor, definir a cor da div, utilize style.backgroundColor, O valor deve ser uma string que, por sua vez, interpola a função rgb() do CSS.

eu fiz a parte HTML e consegui selecionar os inputs com querySelector, porem ele me mostra 0 e não sei atualizar o valor quando a pessoa muda o input. E estou pedido como fazer tudo.

Pessoal eu tentei fazer uma função , mas aprendi com onclick, como seria chamado esse evento do input range, para eu recuperar o valor dele quando mexer a barra.

Vou postar o que consegui fazer primeiro o HTML e depois o JavaScript

<body>
    <h1>RGB</h1>

<form action="/action_page.php">

  <label for="vol">(R) Red:</label>
  <input type="range" id="red" name="red" min="0" max="255" step="10" value ="0">
  <input type="text" id="textRed" name="textRed" value="0" readonly disabled><br>

  <label for="vol">(G) Green:</label>
  <input type="range" id="green" name="green" min="0" max="255" step="10" value ="0">
  <input type="text" id="textGreen" name="textGreen" value="0" readonly disabled><br>

  <label for="vol">(B) Blue:</label>
  <input type="range" id="blue" name="blue" min="0" max="255" step="10" value ="0">
  <input type="text" id="textBlue" name="textBlue" value="0" readonly disabled><br>

</form>

<div class="cor">

</div>

<script src="index.js"></script>

</body>
var red = document.querySelector("#red").value;
console.log(red);

var green = document.querySelector("#green").value;
console.log(red);

var blue = document.querySelector("#blue").value;
console.log(red);

var textRed = document.querySelector("#textRed").value;
console.log(red);

var textGreen = document.querySelector("#textGreen").value;
console.log(red);

var textBlue = document.querySelector("#textBlue").value;
console.log(red);

var div = document.querySelector(".cor");
div.style.backgroundColor = "black";
4 respostas

Olá Daniel, boa noite.

Tudo bem?

Para manter o tom de desafio, vou te dar uma direção de como resolver o problema antes de dar a resposta, ok?

  1. No carregamento da página, você está obtendo o valor dos ranges, por isso as variaveis ficam sempre zeradas. Você pega o valor dos controles no carregamento, atribui a uma variavel e depois não atualiza mais. O correto seria obter no carregamento da página apenas uma referência aos controles e não seus valores:
    var red = document.querySelector("#red");
    var green = document.querySelector("#green");
    var blue = document.querySelector("#blue");
  2. O valor atualizado dos controles range você pode pegar a partir do evento onchange, ou seja, no onchange você obtem, por exemplo red.value.
  3. A atualização dos campos de texto e da div com a cor você fará dentro da função do onchange.

Em resumo, no carregamento da página crie uma função que guarde uma referência aos controles, nos controles associe uma função ao evento onchange (pode ser uma unica função para os 3 controles). Na função, obtenha o valor atualizado dos controles e atualize os campos de texto correspondentes e a div com a cor.

Espero ter ajudo e sigo à disposição caso você tenha mais dúvidas.

Abraço!

Tudo bem Vinicius, muito obrigado pela ajuda. Agora só ficou a última dúvida , eles pedem para jogar a cor dentro da DIV, usando a função rgb() do CSS, com esse comando:

  • style.background(STRING)

Então eu selecionei a Div do html com querySelector dentro de uma variável e vou passar assim.

  • nomevariavel.style.background(red , green, bleu)

  • red, green e blue são variáveis.

Só que não sei qual o jeito certo de passar , se algum conteúdo tem que estar entre aspas , eles pedem para passar via String.

Eu aprendi a passar dessa forma.

  • style.backgroundColor = “red”

E também fiquei na dúvida se é

  • style.background(STRING) ou -style.backgroundColor(STRING)

Obrigado

Olá Daniel.

O correto é do jeito que você aprendeu mesmo.

Background é um propriedade e não uma função e para atribui-la utilizando RGB você pode fazer o seguinte:

variavel.style.background = `rgb(${red}, ${green}, ${blue})`;

No caso acima, red, green e blue são os valores dos ranges (lembrando que os valores são obtidos a partir da propriedade value dos controles).

Espero ter ajudado. Abraço!

solução!

Muito obrigado Vinicius, eu consegui fazer, você me ajudou muito.

valeu mesmo, abraço.