Avatar billede bolmer Nybegynder
26. maj 2005 - 23:03 Der er 25 kommentarer og
1 løsning

Hvad returnere getElementById?

Jeg har lavet en drop/down liste hvor "id" og "name" er ligmed "test1". Denne drop/down liste består af 4 valgmuligheder.

Hvis jeg i et JavaScript kalder:

document.getElementById('test1');

Hvad er det så lige der bliver returneret?


Jeg har prøvet at lave:

String str = (String)document.getElementById('test1');
document.write(str);

Men det giver åbenbart ingen mening.
Avatar billede Slater Ekspert
26. maj 2005 - 23:06 #1
Det er selve objektet der bliver returneret.
Du kan skrive alert(document.getElementById('test1').id); for at få dens ID.
Avatar billede bolmer Nybegynder
26. maj 2005 - 23:13 #2
Når du skriver at det er objektet der bliver returneret, mener du så drop/down listen? Mener at have læst at en drop/down liste svarer til et "select" objekt. Så det er vel et select object som getElementById returnere.
Avatar billede busschou Praktikant
26. maj 2005 - 23:16 #4
det var lige et eksempel :o)
Du skal vide at du får referencen til dit objeckt. Dvs du får referencen til det første objeckt i dit dokument som har det givne id. Hvis du har flere med samme id får du altså kun det første
Du får den type som det er
Hvis det er en <select> så får du en select
Hvis det er en <td> så får du en td osv
Avatar billede bolmer Nybegynder
26. maj 2005 - 23:22 #5
Ok, lige for at være sikker så er et selectobject det samme som en drop/down liste ik?
Avatar billede busschou Praktikant
26. maj 2005 - 23:23 #6
jo det kan man sige.. og <option> er et element i den liste
Avatar billede busschou Praktikant
26. maj 2005 - 23:24 #7
Hvis du er rimelig ny så vil jeg anbefale dig at kigge på www.w3schools.com generelt... der er mange gode eksempler og forklaringer og det er lige til at gå til
også tag for tag
Avatar billede skovenborg Nybegynder
26. maj 2005 - 23:25 #8
det kommer jo an på hvad man mener med drop/down liste. Det mest korrekte vil nok være at sige selectobject eller noget i den stil. En dropdown liste kunne jo også være en dropdownmenu. Men herinde bliver dropdown liste typisk tolket som et selectobject ;-)
Avatar billede busschou Praktikant
26. maj 2005 - 23:28 #9
http://www.w3schools.com/tags/tag_select.asp
citat "The select element creates a drop-down list."
Det er det eneste indbyggede tag i html som har den funktion
Ja du kan lave dine egne med <div>´s som ligger under hinanden eller andet spads...men så kan man jo tolke så meget på så mange måder ;o)
Avatar billede busschou Praktikant
26. maj 2005 - 23:29 #10
Man kan så sige at <select> laver en liste over emner der kan "selectes" afhængig af dens size er der så ikke så meget "drop/down" over den. Og den kan også laves som multibel select
Avatar billede thesurfer Nybegynder
27. maj 2005 - 02:23 #11
"..Hvis du har flere med samme id.." ? :-)
Det er ikke tilladt, at have flere elementer med samme id.. :-)

/theSurfer
Avatar billede roenving Novice
27. maj 2005 - 02:27 #12
-- årh, whaddd ...

-- jeg har da mange gange brugt en andens id, falske kørekort, aflevere oplysninger om en anden i en trafikkontrol eller ved et check i toget er vel helt iorden ?-(
Avatar billede thesurfer Nybegynder
27. maj 2005 - 02:36 #13
Nu er det slut makker :-)
Klokken er halv tre, og du er anholdt.. :-)
Avatar billede busschou Praktikant
27. maj 2005 - 07:17 #14
thesurfer >> var du stiv inat? ;o) Jeg har ikke prøvet een eneste browser som har stoppet op og sagt "det er politiet her er et ulovligt id"...
Ergo konstaterede jeg blot at hvis man har flere med samme id så tager den det første den støder på
Avatar billede roenving Novice
27. maj 2005 - 10:50 #15
Men efter standarden er det altså klart ulovligt, og får du iøvrigt overhovedet noget retur i alle browsere ?-)
Avatar billede busschou Praktikant
27. maj 2005 - 10:53 #16
Alle browsere ... njaa gør du nok ikke.. nu har jeg personligt ikke tjekket samtlige browsere som eksisterer ;o)
Avatar billede skovenborg Nybegynder
27. maj 2005 - 14:45 #17
det kan godt være browserne bare returnerer det første element med den givne id. Det giver jo også meget mening istedet for at den skal rode hele siden igennem og brokke sig højlydt hvis der er flere elementer med samme id.

Men ulovligt er det da - og fy skamme hvis nogen kunne finde på at gøre sådan noget fælt noget =8-0
Avatar billede busschou Praktikant
27. maj 2005 - 14:47 #18
så må vi hellere sende w3c politet efter dem som gør sådanne ulovligheder :p
Ville bare pointerer hvad der skete hvis man havde flere elementer med samme id..det var alt
Avatar billede kargo1 Nybegynder
27. maj 2005 - 19:09 #19
Den diskussion kørte vist lidt af sporet?
getElementById returnerer en pegepind til det element, der har den pågældende ID. ID'et er det ID, du selv definerer, fx. <input type="text" id="mitfelt" value="Hello world">.
Du kan sætte en variabel lig med returværdien fra getElementById og derefter bruge den variabel, når vil foretage et eller andet med elementet. Har du fx. et indtastningsfelt, skal du normalt referere til med en lang tegnstreng som document.all.minformular.mitfelt.

Vil du vise indholdet af tekstfeltet, kan du skrive:

alert (document.all.minformular.mitfelt.value);

Med getElementById ser det sådan ud:

var tekstfelt = document.all.minformular.mitfelt;
alert (tekstfelt.value);
Avatar billede busschou Praktikant
27. maj 2005 - 19:16 #20
busschou er enig med kargo1 ;o)
Avatar billede skovenborg Nybegynder
27. maj 2005 - 19:18 #21
nu synes jeg ikke vi skal blande document.all ind i det her. Det er et IE påfund, som kun har det til fælles med document.getElementById, at de gør det samme ;-)

getElementById er den officielle måde, at få adgang til et element med en given Id (deraf navnet) og den metode er klart at foretrække da den virker i både Mozilla, Opera og IE (document.all er IE only - dog også understøttet af Opera og IE-lignende browsere).

Så dit eksempel skal egentlig se sådan her ud:
var tekstfelt = document.getElementById("mitfelt"); // tekstfelt indeholder nu input-elementet
alert(tekstfelt.value);
Avatar billede kargo1 Nybegynder
27. maj 2005 - 19:21 #22
Det har du fuldstændig ret i, skovenborg - jeg skulle netop til at korrigere mig selv.
:-)
Avatar billede busschou Praktikant
27. maj 2005 - 19:22 #23
bare så der ikke var nogen misforståelser.. var kun enig i kargo1 om at diskussionen var løbet af sporet... synes vi har gjort klart hvad det returnerer som spørgeren ønsker
bolmer >> Jeg lægger et svar.. så må du sige til hvis der var noget du var i tvivl om

hygge :o)
Avatar billede olebole Juniormester
28. maj 2005 - 03:23 #24
<ole>

skovenborg >> Jeg er for så vidt enig, men faktisk er der stor forskel på at bruge document.all og document.getElementById  :)

document.all. svarer nærmere til document.getElementByTagName("*") ... en samlig af samtlige HTML-elementer på siden.
Denne side indeholder ialt 656 HTML-elementer (inden denne kommentar). Lad os nu sige, der er fem af dem, der er udstyret med en ID, så er der pokkers til forskel på at lede i en collection med 5 elementer og et med 656

/mvh
</bole>
Avatar billede olebole Juniormester
28. maj 2005 - 03:27 #25
Nu afslører:
    java script:a=document.all;x=0;for(i=0;i<a.length;i++){if(a[i].id)x++};alert(x)
- i adressebaren på denne side, godt nok den indholder 147 (udaf nu 675) elementer med en ID ... men det er stadig en stor forskel.

Jeg nævner det blot, fordi man ofte hører argumentet:
    "Jamen, jeg koder til et intranet, hvor der kun bruges IE ... det kan være ligemeget, hvilken DOM, jeg bruger."

- men det holder ikke  :)
Avatar billede skovenborg Nybegynder
28. maj 2005 - 10:50 #26
ja, det har du jo ret i - checkede lige M$'s DHTML reference :-) Det forklarer nok også bedre hvorfor document.all efter sigende skulle være langsommere end document.getElementById (hvis jeg husker ret).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester