W jaki sposob zczytac ktory element ze zbioru "radio" jest wybrany? Dla utrudnienia te elementy nie sa w formularzu
A dla ulatwienia nie interesuje mnie rozwiazanie lopatologiczne
W jaki sposob zczytac ktory element ze zbioru "radio" jest wybrany? Dla utrudnienia te elementy nie sa w formularzu
A dla ulatwienia nie interesuje mnie rozwiazanie lopatologiczne
document.getElementById("radio1").checked to jedna z opcji. Jest jeszcze mozliwosc "przesiania" wszystkich elementow i zrobienie spisu tych ktore sa czekd.
jest to zmodyfikowane przezemnie z jakiegos forum wiec nie wiem czy bedize dzialac tak jak chcesz... Prawde mowiac nie wiem czy wogole bedzie dzialacKod:1. var node_list = document.getElementsByTagName('input'); 2. 3. for (var i = 0; i < node_list.length; i++) { 4. var node = node_list[i]; 6. if (node.getAttribute('type') == 'radio') { 9. alert(node.checked+' '+node.id); 10. } 11. }
Po lekkich przerobkach sie nada. Najbardziej pomocny jest tu atrybut getElementsByTagName - nie znalem go i stad problem
Thx.
[size=9px][ Dodano: Sob 24 Maj, 2008 ][/size]
Ajaj, niedobrze... wlasnie sie zorientowalem ze u mnie liczba elementow 'input' nie jest stala a zmienia sie w zaleznosci od roznych czynnikow :/
Stad nie moge tego jednak zastosowac, bo te liczby sie ciagle mieszaja...
WAN, nie ma problemu. Ten skrypt co ci podeslalem mozesz na tyle przerobic ze bedzie przeszukiwal WSZYSTKIE inputy tak jak ci dalem wiec ich liczba moze byc dynamiczna. Tylko wazne jest zeby byl uruchamiany dopiero przy samym wysylaniu posta/geta...
Tak zrobilem, ale mam kilka niezaleznych grup "radiowych", ktore zmieniaja swoje numerki i w efekcie nie wiem czy element o danym id nalezy do danej grupy czy nie. W sumie moznaby to sprawdzac ale zanim to zrobilem to poszedlem na latwizne - zrobilem tam <form name=formname>, choc nie byl potrzebny - po co sobie utrudniac zycie
Za to znowu (wlasciwie to juz norma) dzialanie js mnie zaskoczylo. Zrobilem taka funkcje:
I nie dziala... znalazlem nawet powod - groupname jako nazwa grupy elementow radio nie dziala ze zmiennej - musi byc napisana wprost, dopiero wtedy wyrazenia document.formname.groupnamewpisanebezposrednio.XXX dzialaja jak nalezy. To jest normalne, czy moze ja to zle zapisuje?Kod:function getradio(groupname) { for(var i=0; i<document.formname.groupname.length; i++) { if(document.formname.groupname[i].checked == true) { return var groupname = document.formname.groupname[i].value; } } }
Naturalnie - taki problem to nie problem, wkleilem te petle kilka razy i lopatologicznie zczytuje to wszystko ladnie, ale nie lubie powtarzac kodu ktory jest uzywany wielokrotnie i troche mnie denerwuje, ze nie moge po ludzku zrobic funkcji.
To bez znaczenia poniewaz getelementbyTAG zwraca wszystkie obiekty jako niezalezne od swoich grup wiec nie ma to najmniejszego znaczenia. Kod dobrze zwracal petle juz wczesniej. To co teraz podales to jest ulopatologicznienie tego kodu co ci wyslalem Sam mowiles ze lubisz automatyke wiec czemu go przerobiles na taki? :/Zamieszczone przez WAN
Ale wlasnie na tym to polega - dla mnie wazne jest, aby rozroznic te grupy i sprawdzic jaka jest wartosc elementu zaznaczonego w kazdej grupie osobno.
Dlatego wlasnie to zmienilem - zeby otrzymywac wyniki zaleznie od ich grup
Klopot mam tylko ze zmienna ktorej nie moge tam podstawic - inaczej nie byloby lopatologii.
jest taka prosta funkcja w JS (byc moze obiekt) ktory zwraca rodzica obiektu. Czyli dla radiobuttona bedzie to komora w ktorej zostal umieszczony. W ten sposob mozesz zrobic sobie szlaczek ktory sprawdza idac "w gore" kolejne komory i kiedy natrafi na FORM to zapisuje ten obiekt w tablicy array[formid][]=obiekt
W ten sposob robisz liste WSZYSTKICH radiobuttonow w sposob array[formname][0-xx].checked==... blabla dalej poradzisz sobie.
od razu mowie ze pisalem na szybko bez sprawdzania ale kompatybilnosc powinienes umiec uz sam dopasowacKod:function searchform(element,iter=0) { if (iter<10) { if (element.parentNode.TagName=='form') return element.parentNode.getAttribute('action'); else return searchform(element.parentNode,iter+1);} else return false; } 1. var node_list = document.getElementsByTagName('input'); 2. var tablica = new Array(); 3. for (var i = 0; i < node_list.length; i++) { 4. var node = node_list[i]; 6. if (node.getAttribute('type') == 'radio') { 9. alert(node.checked+' '+node.id); tablica[searchform(node)][]=node; 10. } 11. }
Nice. Nie rozumiem tylko dlaczego tak lubicie się męczyć jQuery robi to za was ;D
Trzy linijki vs kilkanażcieKod:$('input[type=radio]').each(function(){ $(this).val(); //pobranie wartosci kazdego radio ze strony });
http://orodlin.pl/ - Orodlin.pl Team Member
http://blog.albitos.eu - Albi's Jogger - Z pamiętnika młodego programisty
http://wsosnowski.pl - wizytówka
Mam do wynajęcia miejsce na serwerze dedykowanym. Ktoś zainteresowany?
Klaus Korner, przegladajac Jquery mozna zauwazyc ze jest to pewnie kilkadziesiat linijek
Osobiscie uwazam ze nie powinno sie podawac rozwiazan dzialajacych z konkretnymi bibliotekami bo jesli ja przykladowo uzywalbym prototype to najprawdopodobniej jquery juz nie podziala. Rozwiazania problemu powinno sie jednak podawac w czystym JS ale twoje jest jaknajbardziej w oprzadku. Pozatym ze nie zwraca nadrzednej formy ktore to zwraca moja funkcja searchform() a o to wlasnie chodzilo
Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)
Zakładki