Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Warunek do wyliczania wartości
Forum PHP.pl > Forum > Przedszkole
lustfingers
Mam kilka inputów

  1. <li><input type="text" class="col-md-1" id="fraction" name="fraction[]" value="" size="6" />
  2. <input type="text" class="col-md-1" id="ford" name="ford[]" value="" size="6" /></li>



To sumuje mi wartości z wszystkich inputów #ford i wypisuje wynik do #onetotal, teraz chcę aby sumowało tylko te wartości z #ford gdzie w #fraction jest wpisana wartość 1 i wypisać to do #onetotal, i identycznie zsumować wartości z #ford jeśli w #fraction jest wartość 2 i wypisać do #twototal.
  1. var sumaTotal = function() {
  2. var suma = 0;
  3. $('input[id=ford]').each(function(k, els) {
  4. var value = Number($(els).val());
  5. if (!isNaN(value)) suma += value;
  6. })
  7. $('#onetotal').val(suma);
  8. }


Wartość powinienem móc sprawdzić tak
  1. var fraction = els.find('input[id=fraction]').val();
  2. if(fraction == 1){}


Natomiast nie wiem jak to powinno konkretnie wyglądać.

Całość jest nieco bardziej rozbudowana i wygląda mniej więcej tak https://jsfiddle.net/7z31t1gx/10/

Czy takie obliczenie jest w ogóle możliwe?

Jeśli pytanie zatrudne do tego działu to proszę przenieść wątek do innego.
nospor
Poniewaz fraction jest zawsze przed ford, to majac dany ford, poprostu pobierz poprzedni element i wyciagaj z niego wartosc do warunku.

Kod
    $('input[id=ford]').each(function(k, els) {
        var fraction = $(els).prev(); //!!!! tu masz element fraction ktory jest obok element ford.
        var value = Number($(els).val());
        if (!isNaN(value)) suma += value;
    })
lustfingers
Dzięki za odpowiedź ale to mi właściwie nic nie daje ponieważ dalej nie wiem jak napisać warunek który sumowałby tylko te wartości z #ford gdzie w #fraction wpiszę cyfrę 1, a głównie o to mi chodzi.

Zobacz w tym fiddle: https://jsfiddle.net/7z31t1gx/11/ uzupełnij tylko pola A i B dowolnymi liczbami to zobaczysz że oprócz inputów w <li> jest wypełniany na dole input sumujący, natomiast on sumuje wszystko a powinien tylko te z każdego <li> gdy wpisze w D wartość 1.
nospor
Przeciez ci podalem jak masz znalezc fraction. Majac fraction pobierasz jej wartosc tak samo jak wartosc ford. I co, nie umiiesz teraz zrobic if (wartosc == 1) { sumuj} ? Nie przesadzasz z lekka? Nawet jak na przedszkole?
lustfingers
Może i przesadzam nie wiem, po prostu tego nie rozumie i przekopałem sporo internetu, być może nie wiem pod jakim hasłem szukać...
Natomiast to co ty napisałeś to ja napisałem w pierwszym poscie i dalej nie wiem jak ten warunek ma wyglądać, mam proste myślenie i np. w mysql jest piękne ułatwienie w postaci komendy WHERE i wtedy mam wszystko pięknie zsumuj WHERE #fraction = 1, teraz próbując przełożyć to na js zaczynam gubić logikę gdyż gdy robię tak:

  1. var sumaTotal = function() {
  2. var suma = 0;
  3. $('input[id=ford]').each(function(k, els) {
  4. var fraction = $(els).prev();
  5. var value = Number($(els).val());
  6.  
  7. if ((!isNaN(value)) && (fraction == 1)) { suma += value;}
  8. })
  9. $('#onetotal').val(suma);
  10. }


Zawsze mam wynik 0, być może robię jakąś straszną gafę w kodzie w tym lub innym miejscu.
nospor
if ((!isNaN(value)) && (fraction == 1)) { suma += value;}
Przeciez ci napisalem, ze podalem ci jak dobrac sie do ELEMENTU fraction. Napisalem ci rowniez, ze majac ELEMENT masz pobrac jego WARTOSC tak samo jak pobierasz WARTOSC ELEMENTU FORD.
Fraction nie moze sie rownac 1 bo to jest ELEMENT. Wpierwsz masz pobrac WARTOSC ELEMENTU. Tak samo jak pobierasz WARTOSC ELEMENTU FORD.

To sa naprawde proste rzeczy, tylko z jakiegos powodu nie czytasz co sie do ciebie pisze. Nie trzeba tu kopac internetu. Wszystko masz podane jak na tacy
lustfingers
Edit.

Próbuję to zrobić tak:

  1. var sumaTotal = function() {
  2. var suma1 = 0;
  3. var suma2 = 0;
  4. $('input[id=ford]').each(function(k, els) {
  5. var value = Number($(els).val());
  6. var fraction = Number($('input[id=fraction]')[k].value);
  7. if(fraction === 1) {
  8. if (!isNaN(value)) suma1 += value;
  9. }
  10.  
  11. if(fraction === 2) {
  12. if (!isNaN(value)) suma2 += value;
  13. }
  14. })
  15.  
  16. $('#onetotal').val(suma1);
  17. $('#twototal').val(suma2);
  18. }
  19.  


Teraz gdy uzupełnię po kolei A, B przed uzupełnieniem D to nie działa najpierw muszę uzupełnić D...

Edit2.

Ogarnięte smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.