Jump to content
alves077

[Dúvida] innerHTML limpa tabela

Recommended Posts

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

Edited by alves077

Share this post


Link to post
Share on other 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%.

Share this post


Link to post
Share on other 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.

Edited by Rui Carlos
geshi

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.