Ir para conteúdo

POWERED BY:

Arquivado

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

Vinicius Lima

getElementById não entende variavel concatenada

Recommended Posts

Olá!Estou tentando montar um script que busca o valor de vários inputs e os colocam dentro de uma array para depois criálos novamente com um campo a mais... só que não funciona!! o debugger do webdeveloper do firefox informa o segunte:

Erro: obj has no propertiesArquivo-fonte: http://server/sistema/teste2.htmlLinha: 61

Fiz uns testes e percebí que o problema é na hora do getElementById entender a variavel nomeprod, pois se eu defino um valor string normal, tipo
nomeprod = "prod1";
funciona normalmente... agora esse valor concatenado com o 'i' do 'for' naum tá rolando!!!Segue abaixo o código:
function campos(objalvo,maxid,op){	maxid++;	resultcabeca = "<div><a href=\"java script:campos('novotest','" + maxid + "')\">novo</a></div><div>";	resultmeio = "";	resultfim = "</div>";	conteudo = new Array();	for(i=1; i<=(maxid); i++){		nomeprod = new String("prod" + i);		obj = document.getElementById(nomeprod);		conteudo[i] = obj.value;		resultmeio += i + "<input type=\"text\" id=\"prod" + i + "\" value=\"" + conteudo[i] + "\"/><br />";	}	document.getElementById(objalvo).innerHTML = resultcabeca + resultmeio + resultfim;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!Estou tentando montar um script que busca o valor de vários inputs e os colocam dentro de uma array para depois criálos novamente com um campo a mais... só que não funciona!! o debugger do webdeveloper do firefox informa o segunte:

Erro: obj has no propertiesArquivo-fonte: http://server/sistema/teste2.htmlLinha: 61

Fiz uns testes e percebí que o problema é na hora do getElementById entender a variavel nomeprod, pois se eu defino um valor string normal, tipo
nomeprod = "prod1";
funciona normalmente... agora esse valor concatenado com o 'i' do 'for' naum tá rolando!!!Segue abaixo o código:
function campos(objalvo,maxid,op){	maxid++;	resultcabeca = "<div><a href=\"java script:campos('novotest','" + maxid + "')\">novo</a></div><div>";	resultmeio = "";	resultfim = "</div>";	conteudo = new Array();	for(i=1; i<=(maxid); i++){		nomeprod = new String("prod" + i);		obj = document.getElementById(nomeprod);		conteudo[i] = obj.value;		resultmeio += i + "<input type=\"text\" id=\"prod" + i + "\" value=\"" + conteudo[i] + "\"/><br />";	}	document.getElementById(objalvo).innerHTML = resultcabeca + resultmeio + resultfim;}
não tem uma aspa a mais????
"<input type=\"text\" id=\"prod"

Compartilhar este post


Link para o post
Compartilhar em outros sites

não tem uma aspa a mais????

"<input type=\"text\" id=\"prod"
Não pq as primeiras e as últimas aspas são pra colocar o texto dentro da string e as aspas internas você pode reparar que estão com a \ antes, que tem a função de escrever aspas dentro da string, sem fechá-la, eu fechei a string pra poder concatenar com o 'i'... E acho que não tem a ver com isso pq como havia dito quando eu defino um valor string normal para a variavel nomeprod ele funciona normal...

Compartilhar este post


Link para o post
Compartilhar em outros sites

não tem uma aspa a mais????

"<input type=\"text\" id=\"prod"
Não pq as primeiras e as últimas aspas são pra colocar o texto dentro da string e as aspas internas você pode reparar que estão com a \ antes, que tem a função de escrever aspas dentro da string, sem fechá-la, eu fechei a string pra poder concatenar com o 'i'... E acho que não tem a ver com isso pq como havia dito quando eu defino um valor string normal para a variavel nomeprod ele funciona normal...
ok... mas não poderia ser.... ???????"<input type='text' id='prod"+i+"'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Descobrí o erro!

 

o código correto do for deveria ser o seguinte:

for($i=1; $i<=maxid; $i++){		if($i == maxid){			conteudo[$i] = "";		}else{			nomeprod = "prod" + $i;			alert(nomeprod);			obj = document.getElementById(nomeprod);			conteudo[$i] = obj.value;			alert(obj.value);		}		resultmeio += $i + "<input type=\"text\" id=\"prod" + $i + "\" value=\"" + conteudo[$i] + "\"/><br />";	}

O problema é q na primeira verificação do loop ele achava o objeto sem problemas pois o objeto existia, agora na segunda verificação o objeto não existia realmente pois ele seria criado depois, através do resultmeio, então tive de colocar um if....

 

mais muito obrigado pela ajuda! principalmente sobre o alert! tinha esquecido completamente de usá-lo para tentar debugar!! (e pensar q eu uso direto o trace() no flash....)

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.