Ir para conteúdo

Arquivado

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

Biel.

Resumir código javascript

Recommended Posts

Boa tarde a todos. Direto ao ponto. Pessoal estou tentando resumir o código abaixo e que funcione. 

Veja que estou repetindo 5 vezes 

  for(x in){
      var itemW                = [x].split("|");
      var newOption           = document.createElement("option");
          newOption.value     = itemW[0];
          newOption.innerHTML = itemW[1];
          appendChild(newOption);

Gostaria que o código ficasse mais resumido. Veja:

<script>
	for(x in dadosA){
		var itemW                = dadosA[x].split("|");
		var newOption           = document.createElement("option");
		    newOption.value     = itemW[0];
		    newOption.innerHTML = itemW[1];
            SegundoSelect.appendChild(newOption); 
			}
	//=================================================================	
	for(x in dadosB){
		var itemW                = dadosB[x].split("|"); 
		var newOption           = document.createElement("option");
		    newOption.value     = itemW[0];
		    newOption.innerHTML = itemW[1];
			TerceiroSelect.appendChild(newOption);
			}		
	//=================================================================		
	for(x in dadosC){
		var itemW                = dadosC[x].split("|"); 
		var newOption           = document.createElement("option");
		    newOption.value     = itemW[0];
		    newOption.innerHTML = itemW[1];
			QuartoSelect.appendChild(newOption);
			}
	//=================================================================				
	  for(x in dadosD){
	  var itemW                = dadosD[x].split("|");
	  var newOption           = document.createElement("option");
		  newOption.value     = itemW[0];
		  newOption.innerHTML = itemW[1];
		  QuintoSelect.appendChild(newOption);
		  }	
	//=================================================================
	  for(x in dadosE){
	  var itemW                = dadosE[x].split("|");
	  var newOption           = document.createElement("option");
		  newOption.value     = itemW[0];
		  newOption.innerHTML = itemW[1];
		  SextoSelect.appendChild(newOption);
		  }

</script>

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Crie um objeto com os selects e os dados de maneira que fique assim:
 

selectsData = {
   'first-select': dadosA,
   'second-select': dadosB,
   'third-select': dadosC,
   'fourth-select': dadosD,
   'fifth-select': dadosE
};

E percorre esse objeto assim:
 

Object.entries(selectsData).forEach(([select, dados]) => {
   dados.forEach((dado)=>{
      var itemW = dado.split("|");
      var newOption = document.createElement("option");
      newOption.value = itemW[0];
      newOption.innerHTML = itemW[1];
      document.querySelector('#' + select).appendChild(newOption);
   });
});

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

washalbano, obrigado por resumir o código; mesmo assim não conseguir fazer funcionar. Sou iniciante em javascript. Veja todo o código na integra:

<script type="text/javascript">
function populate(PrimeiroSelect , SegundoSelect, TerceiroSelect, QuartoSelect, QuintoSelect, SextoSelect){
	var PrimeiroSelect = document.getElementById(PrimeiroSelect);
	var SegundoSelect  = document.getElementById(SegundoSelect);
	var TerceiroSelect = document.getElementById(TerceiroSelect);
	var QuartoSelect   = document.getElementById(QuartoSelect);
	var QuintoSelect   = document.getElementById(QuintoSelect);
	var SextoSelect   = document.getElementById(SextoSelect);
//=================================================================
	SegundoSelect.innerHTML = "";
	TerceiroSelect.innerHTML = "";
	QuartoSelect.innerHTML = "";
	QuintoSelect.innerHTML = "";
	SextoSelect.innerHTML = "";
//=================================================================
  
	if(PrimeiroSelect.value == "azul"){
		var dadosA = ["1|1"];
		var dadosB = ["|" , "0.00|R$ 0,00"];
		var dadosC = ["|sapato", "1|1"];
		var dadosD = ["|roupa", "roupaP|roupaM"];
		var dadosE = ["|camisa", "2017|2017"];
		}	
//----------------------------------------------------------

	if(PrimeiroSelect.value == "verde"){
		var dadosA = ["2|2"];
		var dadosB = ["0.00|R$ 0,00"];
		var dadosC = ["cc|cc"];
		var dadosD = ["dd|dd"];
		var dadosE = ["ee|ee"];
		}  
		
//##########################################################
// QUERO RESUMIR O CÓDIGO DAQUI PRA BAIXO E QUE FUNCIONE
	for(x in dadosA){
		var itemW                = dadosA[x].split("|");
		var newOption           = document.createElement("option");
		    newOption.value     = itemW[0];
		    newOption.innerHTML = itemW[1];
            SegundoSelect.appendChild(newOption);
			}
//=================================================================	
	for(x in dadosB){
		var itemW                = dadosB[x].split("|");
		var newOption           = document.createElement("option");
		    newOption.value     = itemW[0];
		    newOption.innerHTML = itemW[1];
			TerceiroSelect.appendChild(newOption);
			}		
//=================================================================	
	for(x in dadosC){
		var itemW                = dadosC[x].split("|");
		var newOption           = document.createElement("option");
		    newOption.value     = itemW[0];
		    newOption.innerHTML = itemW[1];
			QuartoSelect.appendChild(newOption);
			}
//=================================================================			
	  for(x in dadosD){
	  var itemW                = dadosD[x].split("|");
	  var newOption           = document.createElement("option");
		  newOption.value     = itemW[0];
		  newOption.innerHTML = itemW[1];
		  QuintoSelect.appendChild(newOption);
		  }		
//=================================================================		  
	  for(x in dadosE){
	  var itemW                = dadosE[x].split("|");
	  var newOption           = document.createElement("option");
		  newOption.value     = itemW[0];
		  newOption.innerHTML = itemW[1];
		  SextoSelect.appendChild(newOption);
		  }
}

</script>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!
Creio que ainda não entendi.

 

<!doctype html>
<html>
   <head>
      <meta charset='utf-8'>
      <title>Javascrip Selects</title>
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <link rel='stylesheet' href='css/style.css'>
   </head>
   <body>
      <main>
         <header id='main'>

         </header>
         <div id='stage'>
            <select name="" id="first-select">
               <option value="azul">Selecione uma opção</option>
               <option value="azul">0</option>
               <option value="verde">1</option>
            </select>
            <select name="" id="second-select"></select>
            <select name="" id="third-select"></select>
            <select name="" id="fourth-select"></select>
            <select name="" id="fifth-select"></select>
            <select name="" id="sixth-select"></select>
         </div>
         <footer id='main-footer'>

         </footer>
      </main>
      <script src="js.js" type="text/javascript"></script>
   </body>
</html>
function populate(PrimeiroSelect, SegundoSelect, TerceiroSelect, QuartoSelect, QuintoSelect, SextoSelect) {
   var PrimeiroSelect = document.getElementById(PrimeiroSelect);
//=================================================================

   dadosA = ["2|2"];
   dadosB = ["0.00|R$ 0,00"];
   dadosC = ["cc|cc"];
   dadosD = ["dd|dd"];
   dadosE = ["ee|ee"];

   if (PrimeiroSelect.value == "azul") {
      dadosA = ["1|1"];
      dadosB = ["|", "0.00|R$ 0,00"];
      dadosC = ["|sapato", "1|1"];
      dadosD = ["|roupa", "roupaP|roupaM"];
      dadosE = ["|camisa", "2017|2017"];
   }

   selectsData = {
      SegundoSelect: dadosA,
      TerceiroSelect: dadosB,
      QuartoSelect: dadosC,
      QuintoSelect: dadosD,
      SextoSelect: dadosE
   };

   Object.entries(selectsData).forEach(([select, dados]) => {
      select = eval(select);
      // remove os options atuais:
      document.getElementById(select).innerHTML = "";
      dados.forEach((dado) => {
         var item = dado.split("|");
         var newOption = document.createElement("option");
         newOption.value = item[0];
         newOption.innerHTML = item[1];
         document.getElementById(select).appendChild(newOption);
      });
   });

}
document.getElementById('first-select').addEventListener('change', function () {
   populate('first-select', 'second-select', 'third-select', 'fourth-select', 'fifth-select', 'sixth-select')
});

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
for(x in dadosA){var itemW=dadosA[x].split("|");(newOption=document.createElement("option")).value=itemW[0],newOption.innerHTML=itemW[1],SegundoSelect.appendChild(newOption)}for(x in dadosB){var itemW=dadosB[x].split("|");(newOption=document.createElement("option")).value=itemW[0],newOption.innerHTML=itemW[1],TerceiroSelect.appendChild(newOption)}for(x in dadosC){var itemW=dadosC[x].split("|");(newOption=document.createElement("option")).value=itemW[0],newOption.innerHTML=itemW[1],QuartoSelect.appendChild(newOption)}for(x in dadosD){var itemW=dadosD[x].split("|");(newOption=document.createElement("option")).value=itemW[0],newOption.innerHTML=itemW[1],QuintoSelect.appendChild(newOption)}for(x in dadosE){var itemW=dadosE[x].split("|"),newOption=document.createElement("option");newOption.value=itemW[0],newOption.innerHTML=itemW[1],SextoSelect.appendChild(newOption)}

 

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.