Oi Jorge, tudo bom?
Acredito que hajam alguns pontos pra comentar no código. Ao final vou deixar ele todo corrigido aqui =)
O primeiro, é que ao selecionar uma option no select secao
não estamos limpando as options no select secaoEscolhida
. O que acaba acumulando as options quando trocamos a selecionada em secao
. O segundo é que estamos redefinindo o array secao:
else if( secao == pr ) {
secao = pr;
// estamos transformando sessão em pr se pr for igual sessão. Sendo que se pr é igual sessão não precisamos da atribuição =)
Terceiro e final, estamos criando um input só e alterando o texto dele no nosso foreach:
// aqui criamos o input
let selectSecaoEscolhida = document.querySelector( '#secaoEscolhida' );
let criaElementoOption = document.createElement( 'option' );
let insereSelect = selectSecaoEscolhida.appendChild( criaElementoOption );
if( secao == rs ) {
secao = rs;
secao.forEach( ( elemento ) => {
// aqui mudamos o nome dele para cada elemento dentro da secao!
criaElementoOption.textContent = elemento;
});
}
Isso faz com que ele varra o array secao e apenas altere o nome do input. Por isso a gente vê um input só sendo criado =)
Para isso, precisariamos criar realmente um input para cada iteração do foreach. Segue código:
let secao = document.querySelector( '#secao' );
let rs = [ "Grêmio", "Inter" ];
let sc = [ "Chapecoense", "Avaí" ];
let pr = [ "Coritiba", "Paraná" ];
let mg = [ "Cruzeiro", "Atlético-MG" ];
secao.addEventListener( 'change', () => {
switch( secao.value ) {
case "1":
criaSelect( rs );
break;
case "2":
criaSelect( sc );
break;
case "3":
criaSelect( pr );
break;
case "4":
criaSelect( mg );
break;
}
});
function limpaSelect(selectbox)
{
var i;
for(i = selectbox.options.length - 1 ; i >= 0 ; i--)
{
selectbox.remove(i);
}
}
function criaOption(elemento){
let selectSecaoEscolhida = document.querySelector( '#secaoEscolhida' );
let criaElementoOption = document.createElement( 'option' );
let insereSelect = selectSecaoEscolhida.appendChild( criaElementoOption );
criaElementoOption.textContent = elemento;
}
function criaSelect( secao ) {
limpaSelect(document.querySelector( '#secaoEscolhida' ));
if( secao == rs ) {
//secao = rs;
secao.forEach( ( elemento ) => {
criaOption(elemento);
});
}
else if( secao == sc ) {
//secao = sc;
secao.forEach( ( elemento ) => {
criaOption(elemento);
});
}
else if( secao == pr ) {
//secao = pr;
secao.forEach( ( elemento ) => {
criaOption(elemento);
});
}
else if( secao == mg ) {
//secao = mg;
secao.forEach( ( elemento ) => {
criaOption(elemento);
});
}
}
Qualquer duvida é só falar.
Abraço e bons estudos!