Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja wyświetlająca <select>
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
wojtek
Witam,

Mam problem z JS, ktorego z moja wiedza o tym jezyku nie potrafie rozwiazac. Najlepiej bedzie jesli pokaze na kodzie:

Kod
function druzyna(nazwa, wybrana) {
    document.write('<select id="'+nazwa+'" name="'+nazwa+'">');
    document.write('<option value="0">brak danych</option>');
    document.write('<option value="4">Cracovia Kraków</option>');
    document.write('<option value="3">Legia Warszawa</option>');
    document.write('<option value="1">Wisła Kraków</option>');
    document.write('</select>');
}


W kodzie html kilkunastokrotnie odwołuję się do funkcji druzyna, jako argument podając nazwę selecta i wybrana wartosc. Problem mam z tym drugim. Chcialbym, aby przy wywołaniu:

Kod
druzyna('nazwa_pola',1);


za pomoca JS zostalo wypisane:

  1. (...)
  2. <option value="1" selected="selected">Wisła Kraków</option>
  3. (..)


... czyli, aby wybrana wartość została wyświetlona domyślnie w select'cie.

Teoeretycznie myślę, że możnaby to rozwiązać w taki sposób:
1) Po ostatniej linii w kodzie funkcji dodać np:
var aktualna = document.getElementById(nazwa);

2) W petli przeleciec po wszystkich elementach <option> pola "aktualna"

3) Jesli value danego option będzie równe wartości "wybrana", to dopisać po value "selected=selected"

Tyle, że nie potrafię tego zrobić w praktyce za pomocą JS. Problem mam z punktem 2) i 3). Jak to można zrealizować?

Z góry dzięki za pomoc.
revyag
Ja tu widze jeden problem.
Zeby móc się do selecta odwołać to on musi istnieć, a ty chcesz się do niego odwoływać w trakcie jego tworzenia co nie przejdzie.
wojtek
Hm.. Chciałem odwołać się do tego selecta już po linijce:

Kod
document.write('</select>');


... czyli po jego stworzeniu.. Chodzi o to, żeby po jego stworzeniu wyszukać odpowiednia wartosc i dodac tam to selected="selected".

Innego sposobu nie widze...
revyag
Kod
s=document.getElementById(nazwa);
for(i=0;i<s.options.length;i++){
    if(s.options[i].value==wybrana){
        s.options[i].selected="selected";
    }
}
wojtek
Dzięki za pomoc, działa świetnie.
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.