Ir para o conteúdo
alves077

[Dúvida] innerHTML limpa tabela

Mensagens Recomendadas

alves077

Boas,

Tenho um código em js para acrescentar linhas a uma tabela, o problema é que quando acrescenta limpa as textbox's que estão nessa mesma tabela. Isto é, se tiver os input preenchidos nessa mesma tabela e acrescentar mais linhas ele limpa me as input anteriormente preenchidas, mas supostamente essa parte da tabela é estática.. Não sei se é por usar o innerhtml, mas pelo que sei devia dar mesmo com o innerhtml.


var parte0 ="<tr class='hero-unit' ><td id='id_" + count + "' align='left' ><form><input type='button'  name='teste_input' id='teste_input' value='teste'></input> </form>";

excluir("teste_input");
document.getElementById(tabela).innerHTML += parte0;
document.getElementById(tabela).innerHTML += "</td></tr>";

A função excluir apaga uma linha, mas não me parece que seja por ai, já que comentei essa linha e o problema continua.

Alguém sabe o problema, ou uma melhor maneira de fazer o que pretendo?

Obrigado pela atenção,

alves077

Editado por alves077

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Usa o DOM sem ser usando o innerHTML.

O InnerHTML é, muitas vezes, uma maneira errada de fazer o quer que seja.

Se fizeres de maneira como está na especificação sem usar o innerHTML ou o outerHTML já deve funcionar como queres.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NazgulTuga

Ao invés de utilizares:

var parte0 ="<tr class='hero-unit' ><td id='id_" + count + "' align='left' ><form><input type='button'  name='teste_input' id='teste_input' value='teste'></input> </form>";

document.getElementById(tabela).innerHTML += parte0;
document.getElementById(tabela).innerHTML += "</td></tr>";

porque não usas antes

var parte0 ="<tr class='hero-unit' ><td id='id_" + count + "' align='left' ><form><input type='button'  name='teste_input' id='teste_input' value='teste'></input> </form></td></tr>";

document.getElementById(tabela).innerHTML += parte0;

Provavelmente parte do problema está no facto de fechares o TD e o TR só depois de adicionares o HTML. O que deve estar a acontecer é que cada innerHTML é processado de forma individual, mas não vejo uma razão para os inputs ficarem vazios.

Ao trabalhares directamente com o innerHTML, a maior parte das vezes o CSS não é aplicado aos elementos passados na String. Se criares os elementos dinamicamente e os adicionares ao elemento "tabela", o CSS é processado.

Criei uma função simples para fazer exactamente isso:

Creating Elements (Javascript)

Outra coisa, com o "Ferramentas de Programador" vai até à aba "Consola" e ao executar esse scritpt, verifica o que acontece. Pode ser que te ajude.

Editado por Rui Carlos
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.