Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Biel.

exibir e ocultar itens do select e que funcione quando o cadastro for feito

Recommended Posts

<pre>
exibir e ocultar itens do select  que funcione quando o cadastro for feito<br>

Boa tarde a todos. Direto ao ponto. Pessoal entendo muito pouco de javascript e estou tentando obter o seguinte resultado e que funcione quando o cadastro for feito 

No EX 1 abaixo gostaria que

no select 1 ao selecionar seg_a_sexta gostaria que o select 3 me apresentasse este resultado
<select name="semanas"  required>
    <option value=""></option>
    <option value="segunda">segunda</option>
    <option value="terca">terca</option>
    <option value="quarta">quarta</option>
    <option value="quinta">quinta</option>
    <option value="sexta">sexta</option>  
</select>

no select 1 ao selecionar sabado gostaria que o select 3 me apresentasse este resultado
<select name="semanas"  required>
    <option value="sabado" >sabado</option>
</select>

no select 1 ao selecionar domingo gostaria que o select 3 me apresentasse este resultado
<select name="semanas"  required>
    <option value="domingo" >domingo</option>
</select>

</pre>

...

EX 1

<pre>
<hr>
select 1
<select name="semanas" style="width:100px;" required >
  <option value="" ></option>
  <option value="seg_a_sexta">seg_a_sexta</option>
  <option value="sabado">sabado</option>
  <option value="domingo">domingo</option>
</select> 

select 2 
<select name="id_semanas" style="width:100px;" >
   <option value=""></option> 
   <option value="1">seg_a_sexta</option>
   <option value="2">sabado</option>
   <option value="3">domingo</option>
</select>   
   
select 3
<select name="semanas" style="width:100px;"  required>
    <option value=""></option>
    <option value="segunda">segunda</option>
    <option value="terca">terca</option>
    <option value="quarta">quarta</option>
    <option value="quinta">quinta</option>
    <option value="sexta">sexta</option>
    <option value="sabado" >sabado</option>
    <option value="domingo" >domingo</option> 
</select>

<script>
(function(document){
  'use strict';
  var $semanas    = document.querySelector('select[name="semanas"]');
  var $id_semanas = document.querySelector('select[name="id_semanas"]');
 
  var mapA = {
    ''            : '',
    'seg_a_sexta' : '1',
    'sabado'      : '2',
    'domingo'     : '3'
  };
 
  function selected($select, value) {
    var $options = $select.getElementsByTagName('option');
 
    for(var i=0; i < $options.length; i++) {
      if ($options[i].value === value) {
        return $options[i].selected = true;
      }
    }
  }
 
  $semanas.addEventListener('change', function(){
    var v = this.value;
    selected($id_semanas, mapA[this.value]);
  });
 
}(document));
</script>


</pre>

 

 

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pergunta como fazer para ao se selecionar uma opção no Select1 seja apresentada no Select3 três variações de seleção.
Depois mostra um Select2 que não foi mencionado na pergunta e a seguir um script JavaScript envolvendo os três Selects e que não funciona.
1-) Inicialmente quantos selects há na página? 1, 2 ou 3?
2-) Por adivinhação imagino que o Select1 já está na página. É isso? e os outros 2?

Esclareça sua pergunta.
Você copiou e colou os códigos na tentativa de adaptá-los às sua necessidades?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
53 minutos atrás, Maujor disse:

Você pergunta como fazer para ao se selecionar uma opção no Select1 seja apresentada no Select3 três variações de seleção.
Depois mostra um Select2 que não foi mencionado na pergunta e a seguir um script JavaScript envolvendo os três Selects e que não funciona.
1-) Inicialmente quantos selects há na página? 1, 2 ou 3?
2-) Por adivinhação imagino que o Select1 já está na página. É isso? e os outros 2?

Esclareça sua pergunta.
Você copiou e colou os códigos na tentativa de adaptá-los às sua necessidades?

 

Oá Maujor, obrigado por postar. O script javascript está funcionando normalmente, juntamente com select 1 select 2 e select 3. copie somente todo EX 1 que postei acima e faça o teste. Obrigado!

Vamos deixar o select 2 de fora sem tirar o mesmo do código e focar no select 1 e select 3. Então gostaria de obter o seguinte resultado e que funcione quando o cadastro for feito.

<pre>
No select 1 ao selecionar o item seg_a_sexta gostaria que o select 3 me apresentasse este resultado
<select name="semanas"  required>
    <option value=""></option>
    <option value="segunda">segunda</option>
    <option value="terca">terca</option>
    <option value="quarta">quarta</option>
    <option value="quinta">quinta</option>
    <option value="sexta">sexta</option>  
</select>
ou ao selecionar o item sabado gostaria que o select 3 me apresentasse este resultado

<select name="semanas"  required>
    <option value="sabado" >sabado</option>
</select>

ou ao selecionar o item domingo gostaria que o select 3 me apresentasse este resultado
<select name="semanas"  required>
    <option value="domingo" >domingo</option>
</select>

</pre>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Biel,
Criei um exemplo funcional com o efeito que você está pretendendo obter.
Destina-se a demonstrar a lógica de funcionamento do script e você poderá melhorar e muito o código
usando ES6, mapeamento etc, tal como sugere seu post original.

Ver em https://jsfiddle.net/fg1jyonb/ 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Maujor, funcionou muito bem. Muito obrigado! Entendo muito pouco de javascript, mas o código que você apresentou entendi 100% . Um detalhe: Se eu quisesse que sábado e domingo não precisasse ser selecionado, como ficaria o código; tipo assim: Selecionei sábado ou domingo no select 1 e no select 3 exibisse assim 

<select name="semanas"  required>
    <option value="sabado" >sabado</option>
</select>

e não assim

<select name="semanas"  required>
    <option value="" ></option>
    <option value="sabado" >sabado</option>
</select>

Nota: Somente para sábado e domingo e não seg_a_sexta . seg_a_sexta é importante que tenha <option value="" ></option> porque temos cinco opções , agora sábado e domingo não precisa porque só existe uma opção.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Biel.
      Olá pessoal. Ao digitar um texto qualquer no input e pressionar submit o valor do atributo href é alterado temporariamente. Como alterar permanentemente no corpo do documento  o valor do atributo href, digitando um nome de link qualquer no campo input e em seguida submit ?
      <!DOCTYPE html> <html> <head> <style> input { width: 100%; font-size: 20px; } textarea { width: 100%; font-size: 16px; height: 200px; } .class88 { margin-top: 50px; padding: 10px; max-width: 100px; } </style> </head> <body> <h2> alterar valor do atributo href</h2> digite um texto qualquer <input type="text" class="class42" value=""> <a id="linkToChange" href="teste5.php" class="class43"></a> <input type="submit" class="class88" value="enviar" onclick="alterarHref()"> <script> function alterarHref() { // pega o valor da class42 var valorDaclass42 = document.querySelector('.class42').value.trim(); // altera o valor do atributo href para o valorDaclass42 sugerido document.querySelector('.class43').setAttribute('href', valorDaclass42); console.log("Href alterado:", valorDaclass42); } </script> </body> </html>  
    • Por Biel.
      Olá pessoal. BannerA está funcionando normalmente. Como usar mesmo script para bannerB e bannerC.
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Banner Aleatório</title> <style> /* Estilos opcionais para o banner */ #divPai { margin: auto; border: 2px solid red; } #bannerA { width: 240px; height: 480px; overflow: hidden; position: relative; } #bannerA img { width: 100%; height: auto; position: absolute; top: 0; left: 0; transition: 1.5s ease-in; } #bannerA img.active { opacity: 1; } </style> </head> <body> <div id="divPai"> <div id="bannerA" class="bannerA"> <a href="link1"><img src="image1.jpg" alt="Imagem 1"></a> <a href="link2"><img src="image2.jpg" alt="Imagem 2"></a> <a href="link3"><img src="image3.jpg" alt="Imagem 3"></a> </div> <!-- <hr> <div id="bannerB" class="bannerB"> <a href="link4"><img src="image4.jpg" alt="Imagem 4"></a> <a href="link5"><img src="image5.jpg" alt="Imagem 5"></a> <a href="link6"><img src="image6.jpg" alt="Imagem 6"></a> </div> <hr> <div id="bannerC" class="bannerC"> <a href="link7"><img src="image7.jpg" alt="Imagem 7"></a> <a href="link8"><img src="image8.jpg" alt="Imagem 8"></a> <a href="link9"><img src="image9.jpg" alt="Imagem 9"></a> </div> --> </div> <hr> <script> document.addEventListener("DOMContentLoaded", function() { // var banner = document.getElementById("divPai"); // var images = banner.querySelectorAll("img"); var images = document.querySelectorAll("#bannerA img"); // Função para exibir uma imagem aleatória function showRandomImage() { // Escolhe aleatoriamente um índice de imagem var randomIndex = Math.floor(Math.random() * images.length); // Define todas as imagens como ocultas images.forEach(function(img) { img.style.display = "none"; }); // Exibe a imagem aleatória images[randomIndex].style.display = "block"; } // Chama a função inicialmente e define um intervalo para exibir novas imagens a cada 3 segundos showRandomImage(); setInterval(showRandomImage, 1000); // makeSliderKind('.bannerA', 1000); // makeSliderKind('.bannerB', 2000); // makeSliderKind('.bannerC', 3000); }); </script> </body> </html>  
    • Por Biel.
      Olá pessoal. O banner abaixo está funcionando e o link acompanha o banner, até aqui tudo ok ! Quero muito fazer uma transição suave entre uma image e outra, colocando as propiedades e valores no css ou diretamente no javascript e nada de propiedades e valores no html através do style . Se possível coloque no código somente o que precisa . Obrigado!
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Banner</title> <style> /* Estilos opcionais para o banner */ .banner { width: 240px; height: 480px; overflow: hidden; position: relative; } .banner img { width: 100%; height: auto; position: absolute; top: 0; left: 0; transition: 1.5s ease-in; } .banner img.active { opacity: 1; } </style> </head> <body> <div class="banner" id="banner"> <a href="link1" class="ggg"><img src="image1.jpg" alt="Imagem 1"></a> <a href="link2" class="ggg"><img src="image2.jpg" alt="Imagem 2"></a> <a href="link3" class="ggg"><img src="image3.jpg" alt="Imagem 3"></a> <a href="link4" class="ggg"><img src="image4.jpg" alt="Imagem 4"></a> <a href="link5" class="ggg"><img src="image5.jpg" alt="Imagem 5"></a> </div> <script> document.addEventListener("DOMContentLoaded", function() { var banner = document.getElementById("banner"); var images = banner.querySelectorAll("img"); // Função para exibir uma imagem aleatória function showRandomImage() { // Escolhe aleatoriamente um índice de imagem var randomIndex = Math.floor(Math.random() * images.length); // Define todas as imagens como ocultas images.forEach(function(img) { img.style.display = "none"; }); // Exibe a imagem aleatória images[randomIndex].style.display = "block"; } // Chama a função inicialmente e define um intervalo para exibir novas imagens a cada 3 segundos showRandomImage(); setInterval(showRandomImage, 3000); }); </script> </body> </html>  
       
    • Por Biel.
      Olá pessoal. O banner abaixo está funcionando normalmente, mas a transição entre uma imagem e outra está um tanto truculenta. Quero deixar suave. Como resolver isso? Obrigado !
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>transition suave entre uma image e outra</title> <style> #banner { width: 240px; height: 480px; overflow: hidden; position: relative; } #bannerGG { width: 100%; height: auto; position: absolute; top: 0; left: 0; opacity: 0; transition: opacity 1s ease-in-out; } /* #tete:active { opacity: 1; } */ </style> </head> <body> <div id="banner"> <img class="bannerGG" src="imagem1.png" alt="Image 1"> <img class="bannerGG" src="imagem2.png" alt="Image 2"> <img class="bannerGG" src="imagem3.png" alt="Image 3"> <img class="bannerGG" src="imagem4.png" alt="Image 4"> <img class="bannerGG" src="imagem5.png" alt="Image 5"> </div> <script> const image = document.querySelectorAll('.bannerGG'); const banner = document.getElementById('banner'); function showRandomImage() { const randomIndex = Math.floor(Math.random() * image.length); const randomImage = image[randomIndex]; const imgElement = document.createElement('img'); imgElement.src = randomImage.src; const linkElement = document.createElement('a'); linkElement.appendChild(imgElement); banner.innerHTML = ''; banner.appendChild(linkElement); } showRandomImage(); setInterval(showRandomImage, 3000); </script> </body> </html>  
    • Por Biel.
      Olá pessoal. O banner abaixo está funcionando, mas quero que o link do banner venha da tag a  e não do javascript . Como resolver? 
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Mostrar link do banner que está na tag a</title> <style> #banner { width: 240px; height: 480px; overflow: hidden; position: relative; } .banner-img { width: 100%; height: 100%; object-fit: cover; position: absolute; /* opacity: 0; */ transition: opacity 0.5s ease-in-out; } .banner-link { display: block; width: 100%; height: 100%; } </style> </head> <body> <div id="banner"> <a href="link147"><img class="banner-img" src="imagem1.png" alt="Image 1"></a> <a href="link254"><img class="banner-img" src="imagem2.png" alt="Image 2"></a> <a href="link350"><img class="banner-img" src="imagem3.png" alt="Image 3"></a> <a href="link462"><img class="banner-img" src="imagem4.png" alt="Image 4"></a> <a href="link538"><img class="banner-img" src="imagem5.png" alt="Image 5"></a> </div> <script> const images = document.querySelectorAll('.banner-img'); const banner = document.getElementById('banner'); function showRandomImage() { const randomIndex = Math.floor(Math.random() * images.length); const randomImage = images[randomIndex]; const imgElement = document.createElement('img'); imgElement.src = randomImage.src; imgElement.alt = randomImage.alt; imgElement.classList.add('banner-img'); const linkElement = document.createElement('a'); // linkElement.appendChild(imgElement); linkElement.href = randomImage.href; linkElement.classList.add('banner-link'); linkElement.href = "page" + (randomIndex + 1) + ".html"; // Link para cada imagem linkElement.appendChild(imgElement); banner.innerHTML = ''; banner.appendChild(linkElement); } showRandomImage(); setInterval(showRandomImage, 1000); </script> </body> </html> Resolvido,  Obrigado a todos !
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.