ugrás a tartalomhoz

JS hivatkozás Select-re

Anonymous · 2006. Már. 14. (K), 16.16
Üdv!

Az egyik oldalamon a következő JS kóddal változtatom meg hogy egy legördülő listában hanyadik elem legyen kiválasztva:
document.formname.selectname.selectedIndex = 1;
Ez működik is, viszont ha pl. olyan a select neve, hogy nev[0], akkor ha arra így hivatkozok JS-el akkor nem megy:
document.formname.selectname[0].selectedIndex = 1;
Gondolom ezt a JS is tömbként kezelné, vagy valami hasonló. Van erre valami megoldás? Esetleg valami escape-karakter?
 
1

Getelemendbyod()

Anonymous · 2006. Már. 14. (K), 16.32
Amennyiben az id a nev[0] akkor szerintem jó a getelementbyid('nev[0]') forma.
2

Változó

Edit · 2006. Már. 14. (K), 16.33
Miért nem teszed ki a nev[0]-t előbb valami változóba?

var ize = nev[0];
document.formname.ize.selectIndex = 1;
3

Nem jó

Anonymous · 2006. Már. 14. (K), 19.38
Nekem így se működik.
4

Böngésző támogatás

Edit · 2006. Már. 14. (K), 21.27
Igen, az ilyen akarmi.ize.valami.megvalami konstrukciók esetén gyakran belefut az ember dolgokba, amik nem működnek, pedig kéne. Esetleg megpróbálhatod nem a select-re, hanem az option-ra beállítani a kiválasztást. És lehetőleg csak DOM core funkciókat használj. Ez például garantáltan működik:

/* Keresd meg a select elemet */
var selectelem = document.getElementById("selectelem");
/* Gyűjtsd be a select elem opcióit */
var options = selectelem.getElementsByTagName("option");
/* Menj végig az opciókat tartalmazó tömbön, és állíts be rájuk egy eseménykezelőt, ami meghívja a kijelölő funkciót */
for (var i=0; i<options.length; i++){
options[i].eseménykezelő = function() {
        options[i].selected = true;
        }
}
5

Rossz név/azonosító

KovacsUr · 2006. Már. 14. (K), 21.37
Ne legyen "olyan a select neve, hogy nev[0]". a [ és ] karakterek nem használhatóak nevekben és azonosítókban; az angol ábécé egy betűjével kell kezdődniük, ezután lehet bennük betű, számjegy, aláhúzás, pont, kötőjel vagy kettőspont.
6

Nem a neve

Edit · 2006. Már. 14. (K), 21.52
Nem a select neve nev[0], hanem a tömb elemé, amiben a select neve tárolódik. Az teljesen rendben van.
7

Talán mégis

KovacsUr · 2006. Már. 14. (K), 22.39
A leírás alapján tartok tőle, hogy de, és éppen ez okozza a problémát. Ha egy tömb eleme lenne, működne a kettes hozzászólásban leírt megoldásod is, eltekintve a selectIndex <-> selectedIndex elütéstől, azaz
var ize = nev[0]; ize.selectedIndex = 1;
Kedves kérdező: nem tudnád esetleg bemutatni a teljes kódot, vagy megadni az oldal linkjét?
8

Select neve

Anonymous · 2006. Már. 14. (K), 23.49
A select neve tényleg ilyen formában van:
<select name="r[]">
Így oldottam meg, hogy a 20 ilyen select értékeit a php-ben tömbként kezeljem, és ellenőrizni tudjam, hogy a 20 selectben nincs-e 2 kiválasztott érték.
Viszont rájöttem hogy JS nélkül is meg tudom oldani, mivel egy függvénnyel generálom a selecteket, csak annyit kellet módosítanom, hogy egy tömbben tároltam el a select elemeit, és paraméterben átadtam azt is, hogy melyiknek kell kijelölve lenni. És így működik JS nélkül is.
9

szabványos elérés

Hodicska Gergely · 2006. Már. 15. (Sze), 01.01
From elemek szabványos elérése a következő (ráadásul ilyen nevekre is működik):
document.forms['formneve'].elements['tomb[]']


Felhő