Ir para conteúdo

POWERED BY:

Arquivado

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

Lagoanet

Quantidade de variáveis dinâmica

Recommended Posts

ESTOU PRECISANDO CRIAR VARÁVEIS DINAMICAMENTE, POIS A QUANTIDADE DE CAMPOS É VARIÁVEL. COMO FAÇO ISSO? QUAL O ERRO NA MINHA FUNÇÃO? NA FUNÇÃO funcao() ABAIXO, TÁ ME RETORNANDO UM ERRO DIZENDO Q RESPOSTA É NULO.

 

OBRIGADO

 

 

function criaArray(n) { 	this.length = n;	for (var i=1; i<=n; i++){		this[i] = "";	}}function funcao(){	var f = document.form;	var qtdeCampos = f.qtdeCampos.value;	var resposta = new criaArray(qtdeCampos);	for(i=0;i<qtde_resp;i++)		resposta[i] = f.resposta[i].value;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite amigo, é simples:

 

function funcao(){	var f = document.form;	var qtdeCampos = f.elements.length; //ele pega a quantidade de campos dentro do seu form	var resposta = new Array(); //não precisa definir o tamanho dele	for (i=0; i<qtdeCampos; i++)	{		resposta[i] = f.elements.item(i).value; //form.elements.item(i) retorna cada campo do seu form	}}

Veja se é isso.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza MEU CARO. NÃO EXATAMENTE ASSIM, MAS ME AJUDOU BEM.OBRIGADO

Boa noite amigo, é simples:

function funcao(){	var f = document.form;	var qtdeCampos = f.elements.length; //ele pega a quantidade de campos dentro do seu form	var resposta = new Array(); //não precisa definir o tamanho dele	for (i=0; i<qtdeCampos; i++)	{		resposta[i] = f.elements.item(i).value; //form.elements.item(i) retorna cada campo do seu form	}}
Veja se é isso.Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém sabe me falar porque no IE funciona e no FIREFOX não? O IE consegue pegar as variáveis dinâmicas "resposta" tranquilamente, mas no FIREFOX elas aparecem como "undefinid".

 

P.S.: "tipo" é o nome de uma tag pra separar somentes os campos do formulário que quero, neste caso os 'tipo="resp"'.

 

Valew

 

 

function dadosEnquete3(){	dado = "";	f = document.enquete;	qtde_resp = f.qtde_resp.value;	resposta = new Array(qtde_resp);	a = 0;	for(i=0;i<f.elements.length;i++){		if(f.elements[i].tipo=="resp"){			resposta[a] = f.elements[i].value;			a++;		}	}	dado += "pergunta="+f.pergunta.value;	dado += "&qtde_resp="+qtde_resp;	a = 1;	for(i=1;i<=qtde_resp;i++){		dado += "&resposta"+i+"="+resposta[a];		a++;	}	return dado;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eduardo. Já descobri o erro.

 

O problema é o seguinte: não sei como o firefox faz a leitura de novas tags em formulários, como no exemplo abaixo, da tag "tipo". Se o tipo do campo fosse "resposta", ele colocaria o valor no array. Mas apenas o IE lê a tag tipo, e o firefox não. Como resolvi. O campo name é padrão de formulários, então pego a substr(0,8) do campo name e comparo se é resposta, se for armazena no array.

 

Se souber como faço o firefox ler tag de form q não seja padrão me avise.

 

No mais muito obrigado.

 

Abraços

 

<input name="resposta1" type="hidden" value="" tipo="resposta"/><input name="resposta2" type="hidden" value="" tipo="resposta"/>

function dadosEnquete3(){	dado = "";	f = document.enquete;	resposta = new Array();	a = 0;	for(i=0;i<f.elements.length;i++){		var tipo = f.elements[i].name.substr(0,8);		if(tipo=="resposta"){			resposta[a] = f.elements[i].value;			a++;		}	}	dado += "pergunta="+f.pergunta.value;	dado += "&qtde_resp="+f.qtde_resp.value;	for(i=0;i<resposta.length;i++){		a = i+1;		dado += "&resposta"+a+"="+resposta[i];	}	return dado;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite amigo.

 

Entendi. Na verdade não é uma tag nova e sim um atributo novo para uma tag já existente (input). Já quebrei a cabeça com esse negócio do firefox não reconhecer. A resolução é tão simples quanto o problema.

 

Acredio que para pegar o valor você estava fazendo assim:

 

var tipo = f.elements[i].tipo;
O que funciona no IE, mas no firefox não... pra resolver, faça o seguinte:

 

var tipo = f.elements[i].getAttribute('tipo');
Simples, não?

 

Veja se resolve.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

É meu caro. Realmente a solução era simples e eu não sabia. Gastei um bom tempo e muita energia do tico e do teco viu. Mas vivendo e aprendendo.Funcionou perfeitamente. Era o que eu precisava.ValewAbraços.

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.