misty
16.02.2012, 09:25:46
czesc, wiem ze problem wydaje sie banalny, ale sprawdzanie dlugosci tablicy poprzez length nie dziala mi pod IE!!
moj kod wyglada nastepujaco:
var elements = document.getElementsByName("test_name");
alert(elements.length);
pod ff zwraca mi dlugosc, ale pod IE daje 0!! czy ktos z Was moze mi pomoc jak sprawdzic dlugosc pod IE?
pzdr,
misty
wookieb
16.02.2012, 09:39:05
A masz element o nazwie "test_name" ? Nie sądzę.
Poza tym podaj resztę kodu - bez kontekstu nic nie możemy powiedzieć, jeszcze się tego nie nauczyłaś?
misty
16.02.2012, 09:42:42
tak, mam element o tej nazwie! kod wyglada tak:
<option value="1" name = "test_name">1</option>
<option value="2" name = "test_name">3</option>
<option value="3" name = "test_name">2</option>
Widze to rowniez w zrodle strony. Poza tym jak wspomnialam - pod Firefox zwraca mi poprawnie dlugosc!
A kontekst podalam - w 1szym poscie! Mam tylko te 2 linijki kodu. Moze naucz sie czytac zanim zaczniesz twierdzic ze ktos nie podaje kontekstu.
Sephirus
16.02.2012, 09:42:54
W ie nie ma getElementsByName
misty
16.02.2012, 09:46:47
Jak to nie ma? Przeciez to jest funkcja js a nie przegladarkowa? hmm, a jak inaczej moge pobrac te elementy z danym name?
webdice
16.02.2012, 09:48:25
alert( document.getElementsByName( "option" ).length );
Może to Cię nakieruje?
misty
16.02.2012, 09:52:03
nie, to nie dziala pod zadna przegladarka:
alert( document.getElementsByName( "test_name" ).length );
webdice
16.02.2012, 09:56:30
Zrozum że funkcja
getElementsByName pobiera element o określonej nazwie, a nie element o określonym atrybucie
name!
<element name="your_name"></element>
alert( document.getElementsByName( "element" ).length );
misty
16.02.2012, 09:57:48
ale ja przetestowalam oba przypadki, tzn to: 3.alert( document.getElementsByName( "option" ).length ); tak samo nie dziala mi pod zadna przegladarka. Poza tym ja nie chce przeszukiwac wszystkich option (bo mam kilka select list) tylko te o okreslonym name.
Sephirus
16.02.2012, 09:58:34
webdice
16.02.2012, 10:01:33
Przepraszam, wziąłem pod uwagę funkcje getElementsByTagName. Funkcja getElementsByName tak jak napisał Sephirus nie działa pod IE.
misty
16.02.2012, 13:26:47
To tez nie do konca o co mi chodzi, ale znalazlam troche inne obejscie. Mam jeszcze 1 pytanie - wiecie moze jak zaznaczyc element w takiej select-liscie? Probowalam roznych kombinacji typu:
$('#idPola').attr('selected', 'selected')
lub
$("option[name='test_name']").attr('selected', 'selected')
ale to nie dziala. Bo rozumiem ze nie musze przeladowywac strony? A moze mi to nie dziala bo uzywam chosen jquery do tworzenia select listy? (a wlasciwie jest to multi-select lista)
pzdr,
misty
zegarek84
16.02.2012, 13:53:55
nie ustawiaj atrybutu tylko ustaw własność
$('#idPola')[0].selected = true;
$("option[name='test_name']")[0].selected = true;
lub możesz robić tak jak robisz ale wybrany będzie ostatni element jakiemu ustawiasz atrybut selected - musiałbyś go usuwać przy nie potrzebnych elementach...
ogólnie selected raczej stosuje się do domyślnych atrybutów...
ps. skoro korzystasz z jQ to nie rozumiem, dlaczego nie korzystasz z niego konsekwentnie tylko się pytałeś o .getElementsByName()...
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.