ďťż
Podstrony
|
telcocafeJak w temacie jak zrobić pętle przez elementy formularza przy użyciu JavascriptChodzi o skrypt do greasemonkey Taki jeden pan z innego forum powiedzial mi tak: lecisz sobie w petli po polach formularza i wypelniasz w kolejnosci. Zawsze wiesz, ze wystapi najpierw imie, potem nazwisko, potem adres etc. http://www.developer...pt-051209-1018/ Tylko ze w ogóle nie wiem o co mu chodzi, jak taka pętle wykonac? Mam niby podany tutorial ale prosze wytlumaczyc czy taki skrypt uzupelnial by formularz? jeśli znasz ID formularza, to odnosisz się przez: document.forms['id'] jeśli wiesz, który to formularz w kolejności: document.forms[0] (liczymy od 0) Pętla wygląda tak: var elementy = document.forms['id'].elements; var ile = elementy.length; for(var i=0; i<ile; i++) { alert( elementy[i].value ); //wyświetla komunikat z atrybutem "value" każdego elementu } Użytkownik Ferrari edytował ten post 10 czerwiec 2010, 14:20 Mozna powiedziec ze znam id ale one sie zmienia. A nie jestem jasnowidzem. Ok zobacze ten od 0 A jak zrobic aby wybieralo mi z listy rozsuwanej? Do petli. Dziala juz :) Jeszcze tylko musze pomyslec jak wygladalby kod ktory wybiera z listy rozwijanej. Jednak jest maly problem;/ Jest np cos takiego: Sa dwa pola gdy ten kod co podales wypelnia pierwsze pole to zaraz potem i drugie... Chocby niewiadomo ile pol bylo caly czas tym pierwszym wyrazem uzupelnia. var elementy = document.forms[0].elements; var ile = elementy.length; for(var i=0; i<ile; i++) { elementy[i].value = 'Pierwsze'; } var elementy = document.forms[1].elements; var ile = elementy.length; for(var i=0; i<ile; i++) { elementy[i].value = 'drugie'; Nie rozumiesz Javascript i obiektowego modelu dokumentu. Popatrz na to: https://developer.mo.../document.forms https://developer.mo...M/form.elements https://developer.mo...org/pl/DOM/form Zakładasz, że masz formularze. Przypisujesz do wszystkich pól pierwszego formularza wartość 'Pierwsze'. Chyba nie tak chcesz zrobić. document.forms[0] //tak odwołujesz się do pierwszego formularza document.forms[0][1] //albo: document.forms[0].elements[1] //do drugiego pola (bo liczymy od 0) document.forms[0].nazwapola //albo: document.forms[0]['nazwapola'] //albo: document.forms[0].elements['nazwapola'] //tak jest bezpieczniej document.forms[0].elements.nazwapola //tak też można var elementy = document.forms[0].elements; elementy[0].value = 'Wartość pierwszego pola'; elementy[1].value = 'Wartość drugiego';Zatem przepisz skrypt tak, aby robił to, co chcesz. Użytkownik Ferrari edytował ten post 13 czerwiec 2010, 16:48 Juz mam kodzik ktory po koleji lapie i uzupelnia :) Dzieki za wytlumaczenie i te linki :D Jest tylko problem z wybieraniem z listy rozwijanej. var elementy = document.forms[0].elements; elementy[0].value = 'cos'; elementy[1].value = 'cos'; elementy[2].value = 'cos'; Edit: Szczerze mowiac zaraz po napisaniu doszedlem do tego co teraz mam :) A ty mnie upewniles ze tak sie robi ;P Użytkownik Kicha edytował ten post 13 czerwiec 2010, 16:51 Mam takie cos juz :) Czy ten kodzik jest dobry i bedzie wybieral? Mi cos nie dziala. select.selectedIndex select.options[select.selectedIndex].value Powinien działać. Pokaż cały kod, wtedy będę mógł znaleźć błąd. select.value też powinien zwrócić aktualną wartość pola <select> Ale jaki caly kod? Strony czy skryptu? ze skryptem robilem takie cos: Wzorowalem sie na poprzednim. elementy[0].select.selectedIndex elementy[0].select.options[select.selectedIndex].value = 'costam'; A w htmlu wyglada tak: <div id="Selector" class="ssClosed"> <a href="#" id="Clicker" onclick="show(); return false;"> <span class="si">costam</span></a> Nie, to tak nie wyjdzie. Jeżeli pole ma atrybut name: <select name="select">, wtedy:elementy['select'].valueJeżeli ma atrybut ID - <select id="select">, wtedy odnosimy się przez document.getElementById:document.getElementById('select').value Użytkownik Ferrari edytował ten post 14 czerwiec 2010, 09:25 Ale jesli ja id pola tego nie znam? Znaczy sie znam id opcji wybieranej ale pola tego nie. Czy ten getElementById to chodzi o id opcji czy pola? Jeśli chcesz, możesz wyciągnąć wartość konkretnej opcji. Po prostu spróbuj sam, a nie pytaj co chwilę. Za pomocą document.getElementById() odnosisz się do dowolnego znacznika, który ma przypisany atrybut id. Bardzo pomocne jest rozszerzenie Firebug do Firefoksa. W karcie DOM można przyjrzeć się własnościom wszystkich obiektów (w karcie HTML znajdujesz odpowiedni znacznik, klikasz prawym klawiszem myszy i wybierasz "pokaż w karcie DOM"). Sie pogubilem w tym firebugu, pelno tego tam jest juz sam nie wiem czego szukac... Czy ten kod powinien wybierac z listy? Napisalem cos takiego z pomoca pewnej rzeczy ale nie wiem czy dziala. var index = PL; var firstone = document.getElementById('Selector').getElementsByTagName('jeden')[index]; firstone.firstChild.innerHTML Akurat zamiast "jeden" powinieneś wstawić nazwę szukanego tagu, a metoda getElementsByTagName() zwraca tablicę, a nie obiekt, więc wartość index będzie numerem (musisz policzyć ile tych elementów jest; najlepiej użyj konsoli i wykonaj console.log(firstone), a wtedy znajdziesz swój numer indeksu). No i skoro już będziesz miał żądaną pozycję, to wystarczy zasymulować na niej kliknięcie (wykonać zdarzenie kliknięcia), więc dalszy kod jest zbędny i właściwie nic on nie robi poza tym, że odwołuje się do treści w spanie. Czyli tak, powinno byc: getElementsByTagName("SPAN") bo szukam spanu który zostanie zaznaczony? chyba dobrze mysle a w var index = liczba ktora odpowiada danej opcji w kolejnosci ktorejsc tam;? A jak sie robi symulacje klikniecia? Czy przez event.initMouseEvent? Poprzez wywołanie element.onclick(). Z tego co czytalem to onclick() dziala "na nacisniecie" toznaczy wywoluje cos dopiero jak użytkownik nacisnie pole. Popatrze jeszcze i poszukam... onclick jest zdarzeniem i mogą je wywołać zarówno użytkownik, jak i skrypt. Nie zadziała jednak przypadek, gdy zechcesz zasymulować kliknięcie na element, do którego nie ma przypisanego zdarzenia (mówię tu konkretnie o atrybucie href).<a href="javascript:alert('href')" onclick="alert('onclick')" id="x">test</a> <script>document.getElementById('x').onclick()</script> Czyli co? w tym htmlu bedzie dzialac? wkoncu jest przypisane ze onclick="show() Użytkownik Kicha edytował ten post 20 czerwiec 2010, 13:27 Sorry za glupi post co napisalem. Nie mysle i wychodza takie glupoty. Z powodu ze nie moge zdzialac z tamtym kodem wiec mam troszke inny sprawdzcie czy on uzupelnia. function select(v) { var select = document.getElementById("selectid"); for(var i=0; i<select.options.length; i++) { if(select.options[i].value == v) { select.selectedIndex = i; break; } } } To raczej Ty powinieneś sprawdzić, czy uzupełnia. On działa tylko dla elementów typu SELECT, więc jeśli używasz go na innego typu elemencie, to nie zadziała. |
|||
Sitedesign by AltusUmbrae. |