Ir para conteúdo

POWERED BY:

Arquivado

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

marciotheory

Deletando linhas de uma tabela

Recommended Posts

Olá pessoal, estou um pouco em desepero... Eu tenhoem uma div uma tabela onde suas linhas são geradas dinamicamente.

Cada linha possui um codigo e um checkbox ao lado desse código(separados por uma linha). embaixo dessa tabela

existe um botão para excluir as linhas marcadas pelo checkbox. Meu problema: quando eu marco as linhas pela primeira vez, ele exclui de forma sequencial as linhas marcadas. Porém após isto se eu tentar fazer isto novamente ele dá erro.

Segue abaixo minha função:

 

function Limpando(){

var tbl = document.getElementById('Tabela'); //adquirir tabela de encomenda

var lastRow = tbl.rows.length; //adquirir n.o de linhas

var i = lastRow;

var k=0;

var z =0;

var QtdExc=0;

var row=0;

while(i>=k){

k=k+1;

alert(k)

row= document.getElementById(k);

if(document.getElementById('Check'+k).checked==true){

 

z = row.parentNode.parentNode.rowIndex;

document.getElementById('Tabela').deleteRow(z);//deletar a linha

document.getElementById('QtdRegCorreio').innerHTML = parseInt(document.getElementById('QtdRegCorreio').innerHTML)-1;

 

}

 

}

 

}

 

one 'Check'+k é o id do check box e k é o id da linha

se alguém poder me ajudar eu agradeceria demais... porém desde já agradeço.

Marcio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde amigo...

 

O problema está no while. Vamos supor que você criou 5 linhas dinamicamente, e com id sequencial:

 

Check1

Check2

Check3

Check4

Check5

 

Você exclui a segunda e quarta linhas. Na primeira vez, maravilha e fica:

 

Check1

Check3

Check5

 

Agora se você tentar executar a função de novo, o loop irá do 1 ao 3 mas o 2 não existe, certo?

 

Para aproveitar o que você tem, quando criar a linha da tabela dinamicamente, atribuia um id do tipo "tr_Check1", ae faz um loop pelas linhas, pega o id da tr, faz um replace para tirar o "tr_" e você tem o id do checkbox correspondente... algo assim:

 

function Limpando()
{
	var tbl = document.getElementById('Tabela');
	var tblSize = tbl.rows.length;
	for (i=tblSize; i>0; i--)
	{
		strCheckId = tbl.rows[i].id.replace('tr_', '');
		chk = document.getElementById(strCheckId);
		if (chk.checked)
		{
			tbl.deleteRow(i);
		}
	}
	(...)
}

Não testei, mas é por ai.

 

Abraço

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.