Intercambiar Style entre Dois Selects através de Javascript
7 respostasResolvido
deciorocha
Tenho um código Javascript com dois select(s).
O Select1 já está populado e ao selecionar um elemento, todos os outros elementos vão para o Select2 , menos o selecionado no Select1. Quando clico em um elemento do Select2, ele envia todos menos o selecionado para o Select1. Eles funciona perfeitamente.
O que não estou conseguindo é passar o conteúdo do Style para o Select oposto, para que seu fundo fique colorido também. Segue o código para que vocês entendam:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/><scripttype="text/javascript">functioninsertSelected(campoOrig,campoDest){Alerta_Valor=campoOrig.value;if(Alerta_Valor==""){alert("Selecione um Item");return;}Origem=campoOrig;Destino=campoDest;Destino.options.length=1;varContador=0;//Destino.length;for(varConta_Laco=0;Conta_Laco<Origem.length;Conta_Laco++){if(Origem.options[Conta_Laco].selected){// faz nada}else{if(Origem.options[Conta_Laco].value==""){// faz nada}else{Destino.options[Contador]=newOption(Origem.options[Conta_Laco].text,Origem.options[Conta_Laco].value);if(Origem.options[Conta_Laco].style.backgroundColor){Destino.options[Contador].style.backgroundColor=Origem.options[Conta_Laco].style.backgroundColor;Destino.options[Contador].style.color=Origem.options[Conta_Laco].style.color;}}Contador++;}}}</script></head><body><formid="form1"name="form1"method="post"action=""><tableborder="0"><tr><td><selectstyle="width: 300px;"name="sel1"id="sel1"size="10"onchange="insertSelected(getElementById('sel1'), getElementById('sel2'));"><optionstyle="color:#FFFFFF; background-color:#C02828;"value="">Competidor Um...</option><optionvalue="01">Alex</option><optionvalue="02">Beto</option><optionvalue="03">Cristiano</option><optionstyle="color:#FFFFFF; background-color:#088F08;"value="04">Décio Rocha</option><optionvalue="05">Eder</option><optionvalue="06">Fábio</option><optionvalue="07">Geovani</option><optionvalue="08">Helton</option><optionstyle="color:#FFFFFF; background-color:#088F08;"value="09">Italo</option><optionvalue="10">Jaime</option><optionstyle="color:#FFFFFF; background-color:#146295;"value="11">Kaio</option><optionvalue="12">Lauri</option></select></td><td>--- Vs. ---</td><td><selectstyle="width: 300px;"name="sel2"id="sel2"size="10"onchange="insertSelected(getElementById('sel2'), getElementById('sel1'));"><optionvalue="">Competidor Dois...</option></select></td></tr></table></form></body></html>
deciorocha
Lucas, obrigado por responder!!!
Realmente funcionou como eu esperava.
Fica a pergunta, para cada evento CSS é preciso uma nova linha. Não há um jeito de capturar todo CSS em uma única linha de Javascript???
Penso no fato de ter um css meio extenso, com muitas opções.
Clique no Select 1 e no Select 2 alternadamente para ver o que acontece… somem os elementos.
E agora, José??? kkkkkkkkkkkkkkkkkkkkk
Solucao aceita
Lucas_Camara1 like
Veja a adaptação do código que fiz. Talvez te dê uma luz para resolver essa lógica.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/><scripttype="text/javascript">functioninsertSelected(elOrigem,idDestino){varorigem=elOrigem;vardestino=document.getElementById(idDestino);if(origem.value==''){console.log('nenhum valor selecionado');return;}varelementosOrigem=getElementsFromSelect(origem);varelementosDestino=[];for(vari=0;i<elementosOrigem.length;i++){varorigemOption=elementosOrigem[i];if(origemOption.selected){origemOption.disabled=true;}elementosDestino.push(origemOption);}setElementInSelect(destino,elementosDestino);}functiongetElementsFromSelect(el){varelements=[];elements.push({text:'Selecione',value:'',style:''});for(varindexinel.options){if(el.options[index].value){varoption={text:el.options[index].text,value:el.options[index].value,style:el.options[index].style,selected:el.options[index].selected};elements.push(option);}}returnelements;}functionsetElementInSelect(el,elements){for(varindexinelements){el.options[index]=newOption(elements[index].text,elements[index].value);if(elements[index].disabled){el.options[index].disabled=elements[index].disabled;}if(elements[index].style){for(varattrinelements[index].style){el.options[index].style[attr]=elements[index].style[attr];}}}}</script></head><body><formid="form1"name="form1"method="post"action=""><tableborder="0"><tr><td><selectstyle="width: 300px;"name="sel1"id="sel1"size="10"onchange="insertSelected(this, 'sel2');"><optionvalue="">Competidor Um...</option><optionvalue="01">Alex</option><optionvalue="02">Beto</option><optionvalue="03">Cristiano</option><optionvalue="04">Décio Rocha</option><optionvalue="05">Eder</option><optionvalue="06">Fábio</option><optionvalue="07">Geovani</option><optionvalue="08">Helton</option><optionvalue="09">Italo</option><optionvalue="10">Jaime</option><optionvalue="11">Kaio</option><optionvalue="12">Lauri</option></select></td><td>--- Vs. ---</td><td><selectstyle="width: 300px;"name="sel2"id="sel2"size="10"onchange="insertSelected(this, 'sel1');"></select></td></tr></table></form></body></html>
deciorocha
Ficou show!!!
Fiquei pensando, ao ver o elemento sem possibilidade de marcar se não conseguiria dar um hidden nele
To perguntando só para tirar a dúvida, mas, como está já é suficiente.
deciorocha
Olá lucastody!!!
Serviu como uma luva as alterações que vc fez.
Te agradeço pelo seu empenho em solucionar meu problema.
DEUS te abençoe!!!
Muito Obrigado.