Ir para conteúdo

POWERED BY:

Arquivado

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

Jackpot

Atualizando um combo com base em outro...

Recommended Posts

Pessoal tô com uma função assim:

 

function buildPositions( value ){	// Line Charts		var Line			=	new Array()		Line[0]				=	"Abaixo"	Line[1]				=	"Acima"	Line[2]				=	"Centralizado"	Line[3]				=	"Cursor"	Line[4]				=	"Direita"	Line[5]				=	"Esquerda"	Line[6]				=	"Ocultar"	// Column Charts		var Column		=	new Array()		Column[0]			=	"Base"	Column[1]			=	"Cursor"	Column[2]			=	"Fora"	Column[3]			=	"Meio"	Column[4]			=	"Ocultar"	Column[5]			=	"Topo"	// Stacked Column Charts		var SColumn			=	new Array()		SColumn[0]			=	"Base"	SColumn[1]			=	"Cursor"	SColumn[2]			=	"Meio"	SColumn[3]			=	"Ocultar"	SColumn[4]			=	"Topo"	// Floating Column Charts		var FColumn			=	new Array()		FColumn[0]			=	"Cursor"	FColumn[1]			=	"Dentro"	FColumn[2]			=	"Fora"	FColumn[3]			=	"Ocultar"	// 3D Column Charts		var Column3D		=	new Array()		Column3D[0]			=	"Cursor"	Column3D[1]			=	"Meio"	Column3D[2]			=	"Ocultar"	Column3D[3]			=	"Sobre"	// Stacked 3D Column Charts		var SColumn3D		=	new Array()		SColumn3D[0]		=	"Cursor"	SColumn3D[1]		=	"Meio"	SColumn3D[2]		=	"Ocultar"	// Floating 3D Column Charts		var FColumns3D		=	new Array()		FColumns3D[0]		=	"Cursor"	FColumns3D[1]		=	"Meio"	FColumns3D[2]		=	"Ocultar"	FColumns3D[3]		=	"Sobre"	// Pie Charts		var Pie				=	new Array()		Pie[0]				=	"Cursor"	Pie[1]				=	"Dentro"	Pie[2]				=	"Fora"	Pie[3]				=	"Ocultar"	// 3D Pie Charts		var Pie3D			=	new Array()		Pie3D[0]			=	"Cursor"	Pie3D[1]			=	"Dentro"	Pie3D[2]			=	"Fora"	Pie3D[3]			=	"Ocultar"	// Bar Chart		var Bar				=	new Array()		Bar[0]				=	"Centralizado"	Bar[1]				=	"Cursor"	Bar[2]				=	"Direita"	Bar[3]				=	"Esquerda"	Bar[4]				=	"Fora"	Bar[5]				=	"Ocultar"	// Stacked Bar Charts		var SBars			=	new Array()		SBars[0]			=	"Centralizado"	SBars[1]			=	"Cursor"	SBars[2]			=	"Direita"	SBars[3]			=	"Esquerda"	SBars[4]			=	"Ocultar"	// Floating Bar Charts		var FBars			=	new Array()		FBars[0]			=	"Cursor"	FBars[1]			=	"Dentro"	FBars[2]			=	"Fora"	FBars[3]			=	"Ocultar"	// Area Charts		var Area			=	new Array()		Area[0]				=	"Abaixo"	Area[1]				=	"Acima"	Area[2]				=	"Centralizado"	Area[3]				=	"Cursor"	Area[4]				=	"Direita"	Area[5]				=	"Esquerda"	Area[6]				=	"Ocultar"	// Stacked Area Charts		var SArea			=	new Array()		SArea[0]			=	"Abaixo"	SArea[1]			=	"Acima"	SArea[2]			=	"Centralizado"	SArea[3]			=	"Cursor"	SArea[4]			=	"Direita"	SArea[5]			=	"Esquerda"	SArea[6]			=	"Ocultar"	// Candlestick Charts		var Candlestick		=	new Array()		Candlestick[0]		=	"Cursor"	Candlestick[1]		=	"Ocultar"	// Scatter Charts		var Scatter		=	new Array()		Scatter[0]			=	"Abaixo"	Scatter[1]			=	"Acima"	Scatter[2]			=	"Centralizado"	Scatter[3]			=	"Cursor"	Scatter[4]			=	"Direita"	Scatter[5]			=	"Esquerda"	Scatter[6]			=	"Ocultar"	// Polar Charts		var Polar		=	new Array()		Polar[0]			=	"Abaixo"	Polar[1]			=	"Acima"	Polar[2]			=	"Centralizado"	Polar[3]			=	"Cursor"	Polar[4]			=	"Direita"	Polar[5]			=	"Esquerda"	Polar[6]			=	"Ocultar"	switch( value )	{		case "none":				var option	=	document.createElement( "option" );		option.setAttribute( "value", "none" );			var label	=	document.createTextNode( "Selecione um Padrão" );		option.appendChild( label );			document.getElementById( "positions" ).appendChild( option );				break;				/* Loop Options for Line Charts */				case "line":				for( item in Line )		{			var option	=	document.createElement( "option" );			option.setAttribute( "value", Line[item] );					var label	=	document.createTextNode( Line[item] );			option.appendChild( label );					document.getElementById( "positions" ).appendChild( option );		}				break;				/* Loop Options for Column Charts */				case "column":		for( item in Column )		{			var option	=	document.createElement( "option" );			option.setAttribute( "value", Column[item] );					var label	=	document.createTextNode( Column[item] );			option.appendChild( label );					document.getElementById( "positions" ).appendChild( option );		}				break;				default:				var option	=	document.createElement( "option" );		option.setAttribute( "value", "none" );			var label	=	document.createTextNode( "Selecione um Padrão" );		option.appendChild( label );			document.getElementById( "positions" ).appendChild( option );				break;	}}

Vários arrays e um switch que monta um combo com os elementos determinados, um array para cada caso.

O combo que será montado tem apenas:

 

<select id="positions" class="select"><option value="none" selected>Selecione uma Posição</option></select>

E o combo "pai", que tem os values no qual o switch da função se baseia está asim:

 

<select name="type" id="type" class="select" onchange="buildPositions( this.value );"><option value="none" selected>Selecione um Formato</option><option value="line">Linhas</option><option value="column">Colunas</option><option value="stacked_column">Colunas Empilhadas</option><option value="floating column">Colunas Flutuantes</option><option value="3d_column">Colunas 3D</option><option value="stacked_3d_column">Colunas 3D Empilhadas</option><option value="parallel_3d_column">Colunas 3D Paralelas</option><option value="pie">Pizza</option><option value="3d_pie">Pizza 3D</option><option value="bar">Barras</option><option value="stacked_bar">Barras Empilhadas</option><option value="floating_bar">Barras Flutuantes</option><option value="area">Área</option><option value="stacked_area">Área Empilhadas</option><option value="candlestick">Degraus</option><option value="scatter">Linhas e Pontos Sobrepostos</option><option value="polar">Polar</option></select>

Bom, expus todos os dados, agora o problema :P

É um único errinho bobo, mas crucial.

 

Quando carrego a página pela primeira vez, a ação funciona de boa. Só que se eu quiser fazer fazer um segundo teste sem carregar a página uma segunda vez, os OPTIONS do combom gerado não são substituído, eles são acrescidos a cada case do switch.

É como se a função ignorasse os comnados break que pus e vai só acrescendo.

 

Poderiam me dizer como faço para corrigir?

 

-------

EDIT

-------

 

Agora que notei, essa minha função, alé de tudo, não funciona no IEca.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito cara, valeu mesmo. Eu rodei o Google com uma porrada de combinações de termos e não achei.Agora tá funcionando certinho.[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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