Dynamiczna tabela

0

Witam wszystkich, z góry dziękuję za pomoc przy rozwiązaniu mojego problemu nad który siedzę już parę dni.

Do zrobienia mam tabele w której będą dodawane i usuwane wiersze, dodatkowo po dodaniu/usunięciu wiersza na dole tabeli ma się pojawiać wiersz w którym odbędzie się sumowanie wartości z dodanych/usuniętych wierszy.

Mój problem występuje w przypadku gdy wiersz zostanie usunięty, nie potrafię rozróżnić, który wiersz został usunięty a jest mi to potrzebne do sczytania wartości by zaktualizować sumę. Poniżej istotny fragment mojego kodu:

[code]<script language="JavaScript">

var czy_jest=0;
var tablica_strata_mocy_eg = new Array();

$(document).ready(function() {
$('#dodajWiersz').click(function() {
if(walidacja()==true){

    var liczba = $('#tabela tr').length;

	var f  = '<td>Transformator o mocy '+moc+'VA - '+ilosc+'szt.<br>Przyjęta stawka za kW*h - '+oplata+'zł/kW*h.<br>Praca - '+doba+'h w ciągu doby, '+rok+' dni w ciągu roku.</td>';
    var f1  = '<td>Transformatory'+strata_mocy_eg.toFixed(0)+'<br>Transformatory konkurencyjne '+strata_mocy_konkurencja.toFixed(0)+'</td>';
    var f2  = '<td>'+roznica_strat.toFixed(0)+'</td>';
	var f3  = '<td>1 roku '+roczek.toFixed(0)+'<br>5 lat '+piec.toFixed(0)+'<br>10 lat '+dziesiec.toFixed(0)+'<br>20 lat '+dwadziescia.toFixed(0)+'</td>';
    var f4  = '<td><a class="button delete" href="#">Usuń</a></td>';
	
    var row = '<tr class="none" id="wiersz-'+liczba+'">'+f+f1+f2+f3+f4+'</tr>';

    $('#tabela').find('tbody').append(row);

    $('tr.none').removeClass('none').animate({'backgroundColor':'#66B04D','color':'#fff'},300,function(){
       $(this).animate({'backgroundColor':'#fff','color':'#000'},300);
    });


	tablica_strata_mocy_eg[liczba-1]=strata_mocy_eg;

	var suma_strata_mocy_eg = 0;
	for (var i=0; i<liczba; i++){
			suma_strata_mocy_eg = tablica_strata_mocy_eg[i] + suma_strata_mocy_eg;
	}

	var f20  = '<td>Suma</td>';
	var f21  = '<td>Transformatory '+suma_strata_mocy_eg.toFixed(0)+'</td>';

	var row_suma = '<tr>'+f20+f21+'</tr>';

	if(czy_jest==0){
		$('#tabela').find('tfoot').append(row_suma);
		czy_jest=1;
	}
	else{
		$('#tabela').find('tfoot tr').remove();
		$('#tabela').find('tfoot').append(row_suma);
		czy_jest=1;
	}
				
	showLayer('page2')
	}

});

$('.delete').live('click',function() {
    $(this).closest('tr').animate({'backgroundColor':'#EF3E23','color':'#fff'},300,function(){
		$(this).remove();
    });
});

});

</script>[/code]

1

Tag <script> nie ma takiego atrybutu jak language. Nie czytaj kursów sprzed 10 lat.

I nie do końca rozumiem Twój problem. Masz po animacji callback, w nim sobie wywołujesz remove(), to dlaczego nie odczytasz sobie w nim jakiejś wartości, tj np (ja nie wiem, w której kolumnie jest co):
var wartosc = $(this).find('td:nth-child(2)').html(); alert(wartosc);? Zawsze też chyba możesz od nowa policzyć sumę wszystkich wartości, nie musisz odejmować tego, co usunąłeś, tak?

edit: Nie czytałem całości, widzę, że tam jakieś dziwne działania robisz, ale nieszczególnie chce mi się to rozgryzać, szczególnie, że nie ma przykładu uzupełnionej tabelki.

0

Super o to mi chodziło, jest jeszcze mały problem ponieważ wartość zwraca mi przykładowo:
"Transformatory 1402
Transformatory konkurencyjne 5002"
A ja potrzebuje wyłuskać jedynie wartość 1402 oraz 5002, dodam ze tych wartości nie mogę wpisać w osobnych komórkach.

Czy jest jakaś na to metoda ?

1

Wyrażenia regularne - ogółem.
Przykład:

var wynik = wartosc.match(/([0-9]+)[^0-9]+([0-9]+)/);
alert(wynik[1]);
alert(wynik[2]);

To bardzo ogólne wyrażenie, wyszukujące dwóch pierwszych liczb całkowitych, nie mogę zagwarantować, że podpasuje Ci do każdych danych jakie mogą się u Ciebie trafić.
Ogólnie Google: wyrażenia regularne i jak Ci trzeba coś bardziej skomplikowanego, to się dokształć.

0

Dzięki za pomoc, wszystko śmiga :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1