![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 87 Pomógł: 0 Dołączył: 25.03.2010 Skąd: Radom Ostrzeżenie: (10%) ![]() ![]() |
Userzy,
mam taką oto funkcję
i takie oto pole inputów
Wszystko działa, ale problem pojawia sie w momencie gdy chce stworzyc kolejne inputy Suma2, 3,4...100...150 Bezsensem jest kopiowanie tej funkcji czy dodawanie kolejnych formow do niej, na pewno da sie przeniesc jakos parametr do funkcji aby wiedziala dla ktorej Sumy ma obliczac wartosci. Problem w tym ,ze nie wiem jak to zrobic. Moze jakies wskazowki za wszej strony? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Chcesz te inputy dodawać dynamicznie (np. przez kliknięcie przycisku) czy po prostu mieć ich liczbę w kodzie?
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 87 Pomógł: 0 Dołączył: 25.03.2010 Skąd: Radom Ostrzeżenie: (10%) ![]() ![]() |
nie, inputy musza zostac tak jak sa (czyli w kodzie).
Kwestia tylko aby dla każdego wiersza z formami (suma1, suma2, suma3...) nie tworzyć nowego skrypu JS ktory bedzie to zliczal tylko wykorzystac ta funkcje
Ten post edytował qweluke 28.10.2011, 22:34:49 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
przy onblur funkcja nie działa już na element input a na window - sprawdź referencję do this - ustaw sobie funkcję na onfocus gdzie do zmiennej będziesz zapisywał sobie element this (dany input) - przed onblur masz onfocus... potem w funkcji suma odwołujesz się do danej zmiennej i do parentNode - to jest formularz w którym znajduje się element input... dalej powinieneś mieć z górki - a jak nie to daj swoje próby działania... a do debugowania kodu korzystaj z mozilli i pluginu firebug...
dobra - prowizoryczny kod gdyż nie chce mi się dopisywać focus: Kod els = [].slice.call(document.getElementsByTagName('input'));
els.forEach(function(el){el.onfocus = function(){window.focused = this;}}); //forEach nie na każdej przeglądarce zadziała i to co w tych 2 linijkach robię musi być wykonane po załadowaniu dom - prościej będzie dla Ciebie przypisać funkcję pod onfocus = fucused_set(); i zdefiniować funkcję function focused_set(){window.focused = this;}; function suma(){ var TablicaIloscElem=5; var Suma1=0; var IloscPol=20; var tablica = [ ['6', '6', '8'], ['8', '8', '6'], ['8-', '8', '8'], ['8q', '6', '8'], ['8e', '8', '6'], ['15', '8', '6'], ]; var inputs = window.focused.parentNode.getElementsByTagName('input'); //window.focused.parentNode - formularz for(i=1;i<=IloscPol;i++) { wiersz1=window.focused.parentNode['pole'+i].value; //zabezpieczenie w przypadku pozostawienia pustego inputa if (wiersz1 == "") { wiersz1 = 0; } //jeżeli input nie jest pusty else { for ($z = 0; $z <= TablicaIloscElem; $z++) { if (tablica[$z][0] == wiersz1) { wiersz1=parseInt('0'+tablica[$z][1],10); break; } } } Suma1+=wiersz1; } inputs[inputs.length-1].value = Suma1; //nie chce mi się zgadywać nazwy - zawsze to ostatni input;p } Ten post edytował zegarek84 28.10.2011, 23:36:05 -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 87 Pomógł: 0 Dołączył: 25.03.2010 Skąd: Radom Ostrzeżenie: (10%) ![]() ![]() |
Dzięki kolego za szybką odpowiedź i Twoją pomoc, problem jednak w tym, że JS uczę się od kilku dni i jeszcze za bardzo nie wiem o czym do mnie mówisz
![]() Cytat //forEach nie na każdej przeglądarce zadziała i to co w tych 2 linijkach robię musi być wykonane po załadowaniu dom - prościej będzie dla Ciebie przypisać funkcję pod onfocus = fucused_set(); i zdefiniować funkcję function focused_set(){window.focused = this;}; Jeżeli dobrze zrozumiałem to mam stworzyć kolejną funkcję
a w
odwoływać się do funkcji focused_set? I jeszcze mam pytanie, bo będę miał kilkadziesiąt <form action="1.html" name="SumaX"></form> gdzie X to numer sumy, i dla każdego forma ma to się obliczać osobno tutaj przykład: http://www.lumi.yoyo.pl/scripts/sumy.html i raczej mialem na mysli, czy da sie ta funkcje tak przerobic, zeby podawac jej parametr "sumax" np. suma3, albo suma4 i dla tego inputa wykonywala te dodawania (tak jak jest to teraz, onblur, albo onkeyup) Ten post edytował qweluke 29.10.2011, 08:29:18 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
więc chcesz to zrobić jak zrozumiałem w ten sposób, że onblur = "suma('Suma1')" - funkcje przerobiłem prawie nic nie zmieniając by łatwiej Ci było zrozumieć zmiany (można to było zoptymalizować), nie sprawdzałem ale będzie działać....
-------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 87 Pomógł: 0 Dołączył: 25.03.2010 Skąd: Radom Ostrzeżenie: (10%) ![]() ![]() |
dokladnie, o to mi chodzilo!
probowalem to zrobic wczesniej samemu, podobnie jak Ty to zrobiles, z tym ze nie dawalem
a
ale w tedy tez nie mialem zainstalowanego firebuga wiec nie wiedzialem gdzie robie blad. Dzieki kolego za pomoc ![]() dobrze, ze mamy takich userow jak Ty, na forum - skorych do pomocy ![]() Ten post edytował qweluke 29.10.2011, 09:59:07 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 15:49 |