Ir para conteúdo
Fórum Script Brasil
  • 0

Innerhtml


olimpia

Pergunta

Tenho uma pagina que adiciono e removo objetos usando o innerHTML

Mas tenho um problema, vamos dizer que tenho uma tabela com quatro linha e cada linha tenha uma select

Seleciono a terceira linha e removo a mesma

Quando faço isso é executada uma rotina em javascript que faz o conteudo da tabela novamente, pego o valor de todas as linha da tabela atraves do innerHTML e vou adicionando em uma variavel, mesmo a linha que foi excluida

No final eu passo o conteudo da variavel para a tabela atraves do innerHTML

Mas o problema é o seguinte, sendo que alguma select estiver com o terceiro valor selecionado, o memo e perdido quando a rotina executa e todas voltam com o primeiro valor

No IE da certo, o valor que estiver na select continua, mas no mozila o valor volta para a primeira opção

Como posso resolver isto?

Link para o comentário
Compartilhar em outros sites

17 respostass a esta questão

Posts Recomendados

  • 0

tu vai ter que trabalhar com a propriedade selectedIndex do teu select. Faz o seguinte, sempre guarda o selectedIndex numa variavel e quando tu for colocar de volta com o innerHTML tu seta essa propriedade de volta. O selectedIndex indica qual a posição selecionada no Select (combobox). Tenta, qualquer coisa post ae...

Abraço

Crystian

Link para o comentário
Compartilhar em outros sites

  • 0

fiz um teste com input type=text

Antes de recuperar o conteudo da td eu digito um texto no input, ai quando recupero o conteudo atraves do innerHtml a propriedade value do input na aparece, ou seja, o input fica em branco

Mas no Ie da certo.

Agora no Mozila, no Opera , ou Netscape não da certo...

Link para o comentário
Compartilhar em outros sites

  • 0

Este é script que adiciona uma linha, tenho um div e dentro dele tenho uma tabela, sendo que cada linha desta tabela tem um select e um input

quando adiciono uma nova linha eu fico em loop ate a ultima linha , recuperando o valor da tr, depois adiciono uma nova tr com o uma select e um input

Mas quando recupero valor da tr atrves do innerHtml, no IE a opção selecionada da select e o texto que esta no input se mantem

Agora no mozila, o select volta para a sua opção inicial e o input fica em branco

function NovoReg(){
  
	// aqui monta o conteudo da tabela  	
	Builder = '<table cellspacing="0" rules="all" border="1" id="DataGrid1" style="width:104px;border-collapse:collapse;"><TBODY><TR id=trCab>' + document.getElementById("trCab").innerHTML + '</TR>';

	//fica em loop ate a ultima linha
	for ( i=0; i < TotalReg; i++) {
      tr = "tr" + i;
      Builder	+= "<TR id=" + tr + " onClick='Excluir(" + i + ")'>" + document.getElementById(tr).innerHTML + "</TR>";	
	}
  	
	// aqui adiciona uma outra linha
	tr = "tr" + i;
	Builder	+= "<TR id=" + tr + " onClick='Excluir(" + i + ")'><TD>"; 
	i = i + 2;
	var select = '<select name="DataGrid1:_ctl' + i + ':DropDownList1" id="DataGrid1__ctl' + i + '_DropDownList1" style="width:120px;">'

	// DropDownListDescricao é um select que esta oculto e contem todas as opção que o select que esta sendo adicionado precisa ter
        select += document.getElementById("DropDownListDescricao").innerHTML;
	select += "</select>";
  	
	//input 
        var txtValor = '<input name="DataGrid1:_ctl' + i + ':txtValor" type="text" id="DataGrid1__ctl' + i + '_txtValor" />';
    	
  	
	Builder += select + "</TD><TD>" + txtValor + "</TD></TR>";	
	Builder += '</TBODY></TABLE><div id="divNovoReg" style="WIDTH: 100%; POSITION: absolute; HEIGHT: 50px; BACKGROUND-COLOR: #66ccff" onclick="NovoReg()"></div>';

	//passa a tavela para o div
	document.getElementById("divDataGrid").innerHTML = Builder;
	// soma 1 no total de linhas da tabela
	TotalReg = TotalReg +1;
}

Link para o comentário
Compartilhar em outros sites

  • 0

Tu deve cuidar para ver se realmente existe elementos com os id's utilizados no "document.getElementById("trCab").innerHTML" porque do contrario, se ele não achar o id dá pau. Outra coisa, a primeira vez q tu entra na página a variavel TotalReg não está inicializada(pelo menos noscript q você postou pra mim) e dá pau no mozilla. Dá uma olhada nessas dicas e depois me diz o que aconteceu...

Abraço

Crystian

Link para o comentário
Compartilhar em outros sites

  • 0

è que uma parte do script e gerada pelo C# quando a pagia esta sendo carregada

Mas esta funcionando legal, não da erro algum, o que acontece é que o conteudo do input não se mantem

Ou seja, quando eu recupero o conteudo da tr onde esta o input a sua proriedade value deveria vim com o valor que foi digitado

Isso so ocorre no IE, se eu eu abrir a pagina no Mozila , não da certo, a propriedade value do input fica vazia e o que foi digitado se perde

Se você quizer eu disponibilizo o link para acessar a pagina

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu Crystian, deu certo

Ficou assim, onde ctl é o id do select

document.getElementById(ctl).options[document.getElementById(ctl).selectedIndex].value
ou
document.getElementById(ctl).options[document.getElementById(ctl).selectedIndex].text

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...