funkcja js dla tych samych nazw inputów ale dla kilku wierszy w tabeli

0

Witam
Sama treść tematu daje do zrozumienia że z javascriptem dopiero zaczynam. A więc. Mam tabelę użytkowników której ilość wierszy jest uzależniona od liczby pracowników w wydziale. W każdym wierszu jest 5 inputów o różnych nazwach (podstawa, dodatek, nagroda, potracenie, suma) i różnych wartościach id, coś w stylu:
<input type='text' name="podstawa[<?php echo $ile ?>]" id="podstawa<?php echo $i ?>" maxlength="3" oninput="pensja();">
Dopisek z php'a oznacza który to numer wiersza (ilość zwróconych wierszy z zapytania do bazy). Do tej pory sumę pensji liczyłem za pomocą tej funkcji:

function pensja() {
var j = document.getElementById("ile").value; //wartość przekazywana z inputra typu hidden z ilością wierszy
        for(i=1; i <= j; i++)
{
               var a = document.getElementById("podstawa"+i).value; 
		var b = document.getElementById("dodatek"+i).value;
		var c = document.getElementById("nagroda"+i).value;
		var d = document.getElementById("potracenie"+i).value;
	
		var wynik = (+a + +b + +c - +d);
		document.getElementById("suma"+i).value = wynik.;
	}
}

I to działa ale nie do końca podoba mi się sposób w jaki uzyskuję dostęp do poszczególnych wartości. Chodzi o tą pętle for() i te numerowanie inputów id="podstawa<?php echo $i ?>". Czy jest na to jakiś lepszy sposób?

0

Też jestem zdziwiony przeplotem PHP i JS. Zagadnienie w mojej opinii jest server-side, i suma jest liczona ZAWSZE w ten sam sposób, frontendowiec nie ma nic do gadania.
Podstawowy obieg pętli dla jednego wiersza wylicza w PHP wszystko co tzreba, nie ma powodów myśleć o innych wierszach (w konsekwencji nie ma po co numerować)

0

Czemu Twoja funkcja przy zmianie pojedynczego "inputra" (:D) liczy pensję dla wszystkich?

Nawiasem mówiąc możesz mieć błąd. Iteracje w JS zaczynasz od wartości 1. Jeżeli w tym zapisie podstawa<?php echo $i ?>" $i to licznik, to prawodpodobnie zaczyna się 0 i możesz mieć przesunięcie o 1. Ale to tylko luźna uwaga niezwiązana z tematem ;)

0
AnyKtokolwiek napisał(a):

Też jestem zdziwiony przeplotem PHP i JS. Zagadnienie w mojej opinii jest server-side, i suma jest liczona ZAWSZE w ten sam sposób, frontendowiec nie ma nic do gadania.
Podstawowy obieg pętli dla jednego wiersza wylicza w PHP wszystko co tzreba, nie ma powodów myśleć o innych wierszach (w konsekwencji nie ma po co numerować)

Dziękuję za odpowiedź. Nie jestem pewien czy dobrze zrozumiałem Twoją sugestię ale próbowałem już bez tej numeracji id="podstawa<?php echo $i ?>" ale wtedy funkcja działa tylko dla jednego wiersza tzn. kiedy mam wyświetloną tabelę wygląda to mniej więcej tak:

pracownik | podstawa | dodatek | nagroda | potracenie | suma |
-----------------------------------------------------------------------------------------|
kowalski | 1200 | 300 | 400 | 0 | 1900 | checkbox
nowak | 1400 | 300 | 400 | 0 | 0 | checkbox // tutaj nie pojawia się wynik
-----------------------------------------------------------------------------------------|
| Zapisz|

Jeśli chodzi o drugą sugestię #Desu. Nie akurat z licznikiem nie ma problem przed pętlą while jest $i = 0 a po od razu jest ``` $i++ więc tu się rachunek zgadza.

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