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

Odpowiedz Nowy wątek
2018-10-30 17:38
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?

edytowany 2x, ostatnio: js_nodle, 2018-10-30 17:46

Pozostało 580 znaków

2018-10-30 18:33
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ć)

Pozostało 580 znaków

2018-10-30 18:35
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 ;)

edytowany 2x, ostatnio: Desu, 2018-10-30 18:38

Pozostało 580 znaków

2018-10-30 19:40
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.

edytowany 6x, ostatnio: js_nodle, 2018-10-30 19:48

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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