Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[JS] Zmiana wyboru w kilku listach rozwijanych na raz

Tworzenie dynamicznych stron internetowych z zastosowaniem JavaScript, jQuery, Ajax. Dowiedz się jak to zrobić, znajdź rozwiązania swoich problemów.

[JS] Zmiana wyboru w kilku listach rozwijanych na raz

Post 12.12.2008, 14:18:17

Witam,
Nie mogę sobie poradzić z jedną sprawą.
Strona HTML zostaje wygenerowana i na niej znajduje się wiele list rozwijanych o takiej samej nazwie i id.
selectedIndex ustawiony jest na 0.

Chcę jednym buttonem zmienić we wszystkich selectedIndex na np. 1. Udaje mi się to zrobić tylko dla pierwszej listy.

A robię to tak:
Kod: Zaznacz cały
onclick="document.getElementById('zatw').selectedIndex = 1;"


Nie wiem jak to zrobić żeby zmieniało się we wszystkich.

W uproszczeniu wygląda to tak:
Kod: Zaznacz cały
<form name="zatwierdz">

<select id="zatw" name="zatwierdzenia" size="1">
<option value="tak">tak</option>
<option value="nie">nie</option>
</select>

<select id="zatw" name="zatwierdzenia" size="1">
<option value="tak">tak</option>
<option value="nie">nie</option>
</select>

<select id="zatw" name="zatwierdzenia" size="1">
<option value="tak">tak</option>
<option value="nie">nie</option>
</select>

<input type="button" value="wybierz nie" onclick=document.getElementById('zatw').selectedIndex = 1;>
</form>


Po kliknięciu przycisku zaznacza się "nie" tylko w pierwszej liście a chciałbym aby ten wybór wykonał się we wszystkich
lobo0
Posty: 2
Dołączył(a): 12.12.2008

Post 12.12.2008, 16:05:08

Atrybut ID w ramach dokumentu MUSI być unikalny. Tak definiuje to standard HTML. Musisz nadać różne ID i 4 razy zapisać instrukcję
Kod: Zaznacz cały
document.getElementById('zatw').selectedIndex = 1
zmieniając identyfikator
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19642
Dołączył(a): 14.04.2002

Post 12.12.2008, 16:09:16

samej nazwie i id.

Z tego co wiem ID powinno być unikalne :)
Name chyba też, ale nie jestem do pewny :)

Co do problemnu zintesresuj się: https://developer.mozilla.org/en/DOM/el ... sByTagName

Pozdrawiam

PS. Jak masz jeszcze jakieś inne listy to możesz dodać do nich klasę (class) i sprawdzać czy klasa równa się podanej w liście :)
kamil4u
hunter
hunter

Posty: 1556
Dołączył(a): 28.12.2007
Lokalizacja: Wrocław / Świdnica

Post 12.12.2008, 16:10:12

Name chyba też, ale nie jestem do pewny :)

nie, NAME nie musi być unikalne (dla przykładu weź grupę radio-buttonów. Żeby poprawnie funkcjonowały muszą mieć tę samą nazwę)
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19642
Dołączył(a): 14.04.2002

Post 12.12.2008, 16:13:47

Rzeczywiście masz rację - więc proponuję getElementsByName ( https://developer.mozilla.org/Pl/DOM/Do ... entsByName )

To chyba najlepsza metoda - bez ID:)

Pozdrawiam
kamil4u
hunter
hunter

Posty: 1556
Dołączył(a): 28.12.2007
Lokalizacja: Wrocław / Świdnica

Post 15.12.2008, 13:11:12

Niestety nie działa również z getElementsByName.

Zrobiłem trochę "naokoło" ale działa poprawnie:
Kod: Zaznacz cały
      function zaznacz(ind){
         var numel = document.forms[0].elements.length;
         for (var i=0; i<numel; i++){
            var name = document.forms[0].elements[i].name;
            if (name == "zatwierdzam"){
               document.forms[0].elements[i].selectedIndex=ind;
            }
         }
      }
lobo0
Posty: 2
Dołączył(a): 12.12.2008


Powrót do JavaScript


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 9 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 50677 zarejestrowanych użytkowników.
Najnowszy użytkownik: OQCJacki


Nasi użytkownicy napisali:

  • 936066 wiadomości
  • w 246713 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)