Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: lista.selectedIndex nie przyjmuje wartości -1
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
php programmer
Mam problem.
Mam SELECT "lista"
Kod
var lista = document.getElementById("lista");
alert(lista.selectedIndex);

gdy jest zanzaczony jakiś element to jest OK
ale jak nie mam zaznaczonego elementu to nic mi nie wyświetla
a liczyłem na to że będę miał -1 wtedy mógbym odpowiednio reagować
na brak wybrania jakiegokolwiek elementu.
Skoro nie przyjmuje wartości -1 to jak poznać że nie wybrano niczego.
dr_bonzo
Moze zwraca wartosc null -- sprawdz w manualu.
php programmer
sprawdzałem z tym nullem, ale chyba to tez nie to:

Kod
if (lista.selectedIndex==null) alert('nic');


--------------------------------------------------------------------------------

A w moim MANUALU mam jedynie to:

Select WŁAŚCIWOŚCI METODY
length - liczba opcji listy blur - usuwa fokus z opcji
name - parametr NAME listy focus - ustawia fokus na opcji
type - parametr TYPE listy
options - odnośnik do konkretnych opcji
selectedIndex - tablica indeksów wybranych elementów


Option WŁAŚCIWOŚCI
defaultSelected - określenie początkowego stanu elementu
selected - określenie aktualnego stanu elementu
text - tekst elementu
value - parametr VALUE
nospor
Powinno zwracac -1. Penwie znowu jakiś kosmiczny kod wymysliles biggrin.gif
POkaz go. Ale jesli nic nie zwroci to mozesz przyjąc ze nic nie zaznaczyl:
No i zakladam ze chodzi o multiselect. gdyz zwykly select zawsze ma cos zaznaczonego. Chyba ze ty go jakos dynamicznie budujesz, ale jesli tak to powinienes sam cos zaznaczyc najpierw

  1. <script language="javascript">
  2. function show()
  3. {
  4. var lista = document.getElementById("lista");
  5. if (lista.selectedIndex && lista.selectedIndex!=-1)
  6. alert(lista.selectedIndex);
  7. else
  8. alert("nic nie wcisnieto");
  9. }
  10.  
  11. <select id="lista" multiple="1">
  12. <option value="1">1</option>
  13. <option value="2">2</option>
  14. <option value="3">3</option>
  15.  
  16. <input type="button" onclick="show();" />


od biedy tez mozesz poleciec po wszystkich option i sprawdzic czy jakas jest zaznaczona
php programmer
Raczej nie mam chyba multiselect
(bo nie ustawiałem, a domyślnie jest chyba jednokrotnego wyboru)

Kod
function Dodaj(){
var source    = document.getElementById("filmy");
var dest      = document.getElementById("lista");
dest.options[dest.length] = new Option(source.options[source.selectedIndex].text,source.options[source.selectedIndex].value);
//AktualizujPosta();
}

function Usun(){
document.getElementById("lista").remove(document.getElementById("lista").selectedIndex);
//AktualizujPosta();
}

function Odtwarzaj(){
var lista = document.getElementById("lista");
var link  = lista.options[lista.selectedIndex].value;
if (link=='') alert('Ten tytuł nie ma przypisanego pliku filmowego');
              else  location.href = link;
alert(lista.selectedIndex)

}
revyag
Na starcie przeciez select ustawia sie na zerowej opcji.
----------
Edit:
Tak pierwszy element, ale przecież na starcie na tym właśnie elemencie jest ustawiony selectedIndex. Bo niby gdzie ma być ?
php programmer
Zero to pierwszy element

Apropos tego kodu (przed chwilą go sprawdziłem):

Kod
if (lista.selectedIndex && lista.selectedIndex!=-1)
alert(lista.selectedIndex); else alert("nic nie wcisnieto");


jak nie mam nic zaznaczone to sie nic nie dzieje
jak jest pierwszy element zaznaczony to pisze "nic nie wcisnieto"
jak nastepne to wypisze odpowiedznią liczbe

Ps. Cytat: "Tak pierwszy element, ale przecież na starcie na tym właśnie elemencie jest ustawiony selectedIndex. Bo niby gdzie ma być ?"

Nie wiem, może -1 , bo pierwsza pozycja to by było przekłąmanie
nospor
nasmazylem taki kod: jest ok. powiedz co się chrzni i kiedy:
  1. <script language="javascript">
  2. function Dodaj(){
  3. var source = document.getElementById("filmy");
  4. var dest = document.getElementById("lista");
  5. dest.options[dest.length] = new Option(source.options[source.selectedIndex].text,source.options[source.selectedInd
    ex].value);
  6. //AktualizujPosta();
  7. }
  8.  
  9. function Usun(){
  10. document.getElementById("lista").remove(document.getElementById("lista").selectedIndex);
  11. //AktualizujPosta();
  12. }
  13.  
  14. function Odtwarzaj(){
  15. var lista = document.getElementById("lista");
  16. if ((!lista.selectedIndex || lista.selectedIndex == -1) && lista.selectedIndex != 0)
  17. alert('zaznacz cos : ' + lista.selectedIndex);
  18. else
  19. alert('zaznaczone : ' + lista.selectedIndex);
  20. //var link = lista.options[lista.selectedIndex].value;
  21. //if (link=='') alert('Ten tytuł nie ma przypisanego pliku filmowego');
  22. //else location.href = link;
  23. //alert(lista.selectedIndex)
  24.  
  25. }</script>
  26.  
  27. <select id="lista">
  28. <select id="filmy">
  29. <option value="fil1">fil1</option>
  30. <option value="fil2">fil2</option>
  31. <option value="fil3">fil3</option>
  32.  
  33. <input type="button" onclick="Dodaj();" value="Dodaj" />
  34. <input type="button" onclick="Odtwarzaj();" value="Odtwarzaj"/>
  35. <input type="button" onclick="Usun();" value="Usun"/>


i zacznij wreszcie bbcode uzywac!!!
revyag
Jeśli się mylę to biję się w piersi snitch.gif
Kiedy strona się załaduje selectedIndex selecta jest ustawiany na jego pierwszej opcji.
Dlatego jego wartość wynosi zero a nie -1.
php programmer
OK podany kod DZIAŁA exclamation.gif!
Dzieki.
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.