Avatar billede hmm10 Nybegynder
03. juli 2005 - 21:50 Der er 18 kommentarer og
1 løsning

Brug variabel til at præcisere id'et

Hej,

Jeg har et simpelt javascript, der virker fint, så længe mit opbjekt hedder id='info'. Se nederfor:

function show() {
  info.style.display = "";
}

Men når jeg skal have mere end en giver den problemer, da id pejer på det samme. Kan man ikke angive, hvilken id der skal styres? a-la:

function show(who) {
  [who].style.display = "";
}

Det er sikkert enkelt, men jeg er ikke skrab til javascript, så bær over med mig, og forklar tydeligt, hvis det skal løses på en anden måde :)

Med Venlig Hilsen,
HMM10
Avatar billede nielle Nybegynder
03. juli 2005 - 21:51 #1
document.getElementById["info"].style.display = ""
Avatar billede nielle Nybegynder
03. juli 2005 - 21:52 #2
Altså:

function show($who) {
    document.getElementById[$who].style.display = "";
}
Avatar billede hmm10 Nybegynder
03. juli 2005 - 22:06 #3
'document.getElementById' er null eller ikke et objekt.

Hedder det også '$who' i javasript? Hedder det i php..
Avatar billede nielle Nybegynder
03. juli 2005 - 22:15 #4
Ja også $ i JavaScript - men man ser også notationen uden.
Avatar billede nielle Nybegynder
03. juli 2005 - 22:16 #5
Din null-fejl tyder på at du kalder show() med noget forkert. Kan du ikke lige vise sammenhængen med din anden kode? Hvad er det du gør?
Avatar billede hmm10 Nybegynder
03. juli 2005 - 22:32 #6
<span id="show1" onMouseOver="show(val1);">HER 1</span>
<div id="val1" style="display: none;">En skjult tekst.. 1</div>

<span id="show2" onMouseOver="show(val2);">HER 2</span>
<div id="val2" style="display: none;">En skjult tekst.. 2</div>

osv..
Avatar billede hmm10 Nybegynder
03. juli 2005 - 22:58 #7
function show(who) {
  document.getElementById(who).style.display = "";
}

Virker :)

points?
Avatar billede nielle Nybegynder
03. juli 2005 - 23:01 #8
Svar :^)
Avatar billede hmm10 Nybegynder
03. juli 2005 - 23:04 #9
Kan du ikke give mig en forklaring på det '$', hvornår bruger man det?
Avatar billede nielle Nybegynder
03. juli 2005 - 23:10 #10
Man bruger vist $ når man ikke allerede har definert sin variabel med var. Imidlertid har jeg en mistanke om at det er MS Explorer som her spiller os et pus og acceptere variable uden $-tegn. Du bør lige tjekke om koden også holder i andre browsere.
Avatar billede nielle Nybegynder
03. juli 2005 - 23:12 #11
Bortset  fra det så børde du have pinger rundt om dine argumenter:

<span id="show1" onMouseOver="show('val1');">HER 1</span>
<div id="val1" style="display: none;">En skjult tekst.. 1</div>

<span id="show2" onMouseOver="show('val2');">HER 2</span>

Her er det i hvert fald MSIE som "hjælper" med at gætte sig frem til hvad du mener. Det er ikke standard.
<div id="val2" style="display: none;">En skjult tekst.. 2</div>
Avatar billede softspot Forsker
04. juli 2005 - 00:46 #12
Dollartegnet i variabelnavnet er ikke anderledes end andre tegn og kan sammen med underscore og bogstaver fungere som det første tegn i en variabel (dog ikke før JavaScript v1.1). Det frarådes dog at man benytter dette tegn, da det primært benyttes af kodegeneratorer. Det har altså ikke nogen funktion som sådan...
Avatar billede softspot Forsker
04. juli 2005 - 00:48 #13
Variabler erklæres i øvrigt implicit hvis du ikke selv gør det eksplicit.
Avatar billede roenving Novice
04. juli 2005 - 11:25 #14
-- og jeg vil gerne gentage:

$-tegn i variabelnavne i javascript er 'bare' et tegn, som man kan bruge ...

-- Det har ikke det fjerneste med erklæringer eller ikke erklæringer af variable at gøre ...

-- som det iøvrigt kan betale sig at gøre intensivt brug af, da det er den eneste chance for endeligt at kontrollere scope pga. javascripts efterladenhed på dette område !-)
Avatar billede hmm10 Nybegynder
04. juli 2005 - 12:36 #15
- Svarpirat! takker :O)
Avatar billede nielle Nybegynder
04. juli 2005 - 17:11 #16
Hvis $ bare er et tegn, kan I forhåbentlig svare på hvorfor:

function show(who) {
  document.getElementById(who).style.display = "";
}

- virker (03/07-2005 22:58:02), mens:

function show($who) {
  document.getElementById($who).style.display = "";
}

- ikke virker (03/07-2005 22:06:46).

Det er bestemt ikke fordi at jeg ikke tror på jer, men der er et eller andet som jeg ikke kan få til at stemme?!
Avatar billede softspot Forsker
04. juli 2005 - 20:56 #17
Mit gæt er at du i det første svar (22:06:46) angiver getElementById med klamme-parantes (som man benytter til indeksering i arrays - hvilket getElementById jo ikke er...) og i det der fungerer (22:58:02) med almindelige paranteser (som man skal når man kalder en funktion i  javascript).

Når jeg fremstiller ovenstående påstand henholder jeg mig til hvad O'Reilly skriver i deres bog: "JavaScript, The Definitive Guide" (4. udgave) om identifiers, herunder variabelnavngivning...
Avatar billede nielle Nybegynder
04. juli 2005 - 21:35 #18
Læg mærke til at jeg ikke sagde noget om at du "påstod noget". Jeg regner bestemt ikke med selv at være ufejlbarlig, og satser bare på at blive bedre med tiden.

... og så tror jeg iøvrigt at du har fuldstændig ret mht. de kantede parenteser. :^)
Avatar billede softspot Forsker
04. juli 2005 - 22:18 #19
Godt ord igen :)

(der manglede en glad smiley til sidst i min besked :))
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