Szám azonosítóra nem működik a getElementById()?
Sziasztok. Igazából eddig nem volt nagy szükségem a JavaScript mélyreható ismereteire, azonban változott a helyzet. Akad is problémám elég. Azonban most van egy amivel már bíbelődök egy ideje, és se a neten se máshol nem találok megoldást. egy form list menüjét szeretném objektummá varázsolni. szeretném, ha bizonyos akciókra frissítené tartalmát, (prototype-t fogok használni). Természetesen külön fájlban fogom tárolni a js-t. az objektum létrehozásakor szeretném megadni, hogy mi a list ID-je. No el is kezdtem a terveimet leprogramozni, azonban képtelen vagyok elérni, két dolgot.
1. nem tudom, hogy az ID alapján hogyan fogon new options-t futtatni, mivel eddig a document.formname.mezoname.options[]-t használtam.
2. ha meg gebedek is az objektum meghívásakor kapott ID alapján valahogy nem tudja azonosítani a list menüt. Mintha üres lenne az ID-t megadó azonosító. Nem veszik el azonban, hisz az alert mezőben jó értéket ír ki.
Kutatom a netet egy idelye valami részletesebb getElementById() magyar leírása miatt, de nem találtam.
Ha esetleg tudnátok segíteni megköszönném.
Íme egy kódrészlet:
HTML FEJHTML BODYJS fájlSajnos még soha nem jutottam el ahhoz, hogy alertben a REMEK jöjjön elő. Az IDDd mindig null, az IDs pedig a 12.
Próbáltam sima text bevitelivel is, aminek értéke van. ugyan ez a helyzet. a legtöbb variáció esetén a hibaüzenet, hogy a várt elem objektum.
Előre is köszönöm a segítséget, és mindenkinek boldog karácsonyt!
■ 1. nem tudom, hogy az ID alapján hogyan fogon new options-t futtatni, mivel eddig a document.formname.mezoname.options[]-t használtam.
2. ha meg gebedek is az objektum meghívásakor kapott ID alapján valahogy nem tudja azonosítani a list menüt. Mintha üres lenne az ID-t megadó azonosító. Nem veszik el azonban, hisz az alert mezőben jó értéket ír ki.
Kutatom a netet egy idelye valami részletesebb getElementById() magyar leírása miatt, de nem találtam.
Ha esetleg tudnátok segíteni megköszönném.
Íme egy kódrészlet:
HTML FEJ
<script type="text/javascript" language="JavaScript">
proba = new CountryList('12');
</script>
<select name="12" size="10" id="12">
</select>
function CountryList(ListsID)
{
this.CountryError = '';
this.CountryFormID = IDCheck(ListsID);
this.CountryListElements = new Array();
this.CountryCommand = "countryquery";
this.CountryQuery = 'country';
this.QueryMethod = 'get';
}
function IDCheck(IDs)
{
var IDDd = getElementById(IDs);
if(!IDDd)
{
alert("Nincs ilyen ID: "+IDDd+" Kapott: "+IDs);
return false;
}
alert("REMEK");
return IDDd;
}
Próbáltam sima text bevitelivel is, aminek értéke van. ugyan ez a helyzet. a legtöbb variáció esetén a hibaüzenet, hogy a várt elem objektum.
Előre is köszönöm a segítséget, és mindenkinek boldog karácsonyt!
nem szám!
Magyarul
Azonban a berakott linkedet megnéztem. Amennyit megértettem: nem mind1 milyen karaktereket használok a névben. Hát most kipróbáltam egyszerű 1 -el, zizi -vel de sajna ugyanaz.
Az IDDd null, az átvett érték (IDs) pedig jó.
Nem kezdődhet számmal az ID
Az ID és NAME tokenek kötelezően betűvel kell, hogy kezdődjenek ([A-Za-z]) ezután bármennyi számú betű, szám ([0-9]), kötőjel, alúlvonal(?)/aláhúzás jel, kettőspont vagy pont karakter állhat.
Ebből nekem a kettőspont és a pont nagyon meglepő, ugyanis a CSS kiválasztóknak simán bezavarhatnak. Pl. id="legparnas:hover" eseten #legparnas:hover pszeudo osztálynak is felfogható vagy id="link.hu" esetén #link.hu olyan id aminek hu az oszálya.
Köszi
nem név, hanem ID
document.getElementById(IDs)
A DOM-ban kövesd a hierarchiát!
Kihagytad az értékadásnál a select szülőjét.
Tehát így próbáld meg:
Nem oké teljesen
prototype-t használok. A választ elküldöm a megfelelő funkciónak, azonban abban a funkcióban nem tudom elérni a proba objektum CountryFormID értékét. Csak úgy tudom elérni, ha beírom a létrehozott objektum nevét azaz így: proba.CountryFormID Ez persze nem megoldás, hiszen nem korlátozhazom le a kódban, hogy majd mi legyen az objektum neve. ELméletileg átadhatnám a funkciónak az adatot, de sajnos ugye ez pont a prototype válasz feldolgozása, így nem tudok +adatokat továbbítani.
A másik ilyen probléma, hogy nem müxik ez a dolog: document.getElementByID('listmenu').options[0] = new Option("Új ország felvitel","uj","");
köszönet az eddigi válaszokért is!