Avatar billede Slettet bruger
19. februar 2009 - 13:15 Der er 18 kommentarer og
2 løsninger

Hjælp til at lave en funktion

Hej... Nu skal I se: Jeg har et layer der bliver vist. Følgende virker fint:

<a href = "java script:void(0)" onclick = "document.getElementById('test').style.display='block';document.getElementById('fade').style.display='block';frame2.location.href='test.htm'">Test</a>

Jeg vil gerne lave ovenstående om til en funktion, så mine a href's ikke bliver så lange. Jeg har forsøgt mig frem med:

<script>
function open_layer( id, url)
{
document.getElementById( + id + ).style.display='block';
document.getElementById('fade').style.display='block';frame1.location.href='' + url + '';
}
</script>

- som kaldes med:

<a href = "java script:void(open_layer('test','test.htm'));">Test</a>


Er der en, der kan se, hvad jeg gør galt?
Avatar billede majbom Novice
19. februar 2009 - 13:24 #1
du skal i hvert fald rette:

document.getElementById( + id + ).style.display='block';

til:

document.getElementById(id).style.display='block';
Avatar billede Slettet bruger
19. februar 2009 - 13:26 #2
Ah - damn, jeg hader når der ikke skal mere til :-D

Jamen, nu virker det! Jeg takker!

Svar endelig for point :-)
Avatar billede Slettet bruger
19. februar 2009 - 13:32 #3
Hvis man nu vil genbruge id'et til at kalde unikke iframes, er det så:

document.getElementById('fade').style.display='block';frame_' + id + '.location.href='' + url + '';


?
Avatar billede majbom Novice
19. februar 2009 - 13:34 #4
svar

ja, det ser meget rigtigt ud...
Avatar billede Slettet bruger
19. februar 2009 - 13:38 #5
hmm - det virker ikke :-s
Avatar billede olebole Juniormester
19. februar 2009 - 13:39 #6
<ole>

Nej, det ser helt forkert ud  =)
Hvis du vil bruge location objektet, skal du kalde iframe'en med en name-attribut:

function fooBar(sName, sUrl) {
    frames[sName].location.href = sUrl;
}

<iframe name="foo" .................. >
<button onclick="fooBar('foo', 'http://dengodekode.dk/)">Load iframe</button>

/mvh
</bole>
Avatar billede majbom Novice
19. februar 2009 - 13:39 #7
du skal nok lige have document.getElementById "rundt om" :)
Avatar billede olebole Juniormester
19. februar 2009 - 13:40 #8
- eller:

function fooBar(sName, sUrl) {
    document.getElementsByTagName(sName)[0].location.href = sUrl;
}
Avatar billede olebole Juniormester
19. februar 2009 - 13:41 #9
- og hvis du vil kalde med id:

function fooBar(sId, sUrl) {
    document.getElementById(sId).contentWindow.location.href = sUrl;
}

<iframe id="foo" .................. >
<button onclick="fooBar('foo', 'http://dengodekode.dk/)">Load iframe</button>
Avatar billede olebole Juniormester
19. februar 2009 - 13:41 #10
- eller:

function fooBar(sId, sUrl) {
    document.getElementById(sId).setAttribute("src", sUrl);
}
Avatar billede olebole Juniormester
19. februar 2009 - 13:45 #11
Årsagen er, at med document.getElementById får du fat i iframe'ens HTML-element. Det har ikke et lokation objekt - men en src-attribut.

Kalder du med 'name', får du fat i iframe'ens window objekt. Det gør du også, hvis du bruger 'contentWindow' på iframe'ens HTML-element.

Window objektet har ikke en src-attribut - men et location objekt  ;o)
Avatar billede Slettet bruger
19. februar 2009 - 13:49 #12
Ok,

function open_layer(id,url)
{
document.getElementById(id).style.display='block';
document.getElementById('fade').style.display='block';
frames[id].location.href = url;
}

virker fint med: <a href = "java script:void(0)" onclick="open_layer('test','test.htm')";>Test</a>

Og så er det lige meget, at jeg har et div:
(<div id="test">), som hedder det samme som framet (<iframe name="test" ...>)?
Avatar billede olebole Juniormester
19. februar 2009 - 13:51 #13
Nej, det ville ikke være hensigtsmæssigt på nogen somhelst måde  =)
Avatar billede Slettet bruger
19. februar 2009 - 14:01 #14
Ha, jeg tænkte nok, det var det, du ville sige :-)

Men hvis jeg nu "præfikser" mit iframe-navn med eks.: "iframe_"

i stil med:

frames['iframe_'+id].location.href = url;



så bliver du forhåbentligt glad *g*?
Avatar billede olebole Juniormester
19. februar 2009 - 14:10 #15
Glad?! Det bliver svært at få mig til at holde op med at joddle!  ;D
Avatar billede olebole Juniormester
19. februar 2009 - 14:11 #16
- og meningen var: Ja, jeg er glad ... meget
Avatar billede Slettet bruger
19. februar 2009 - 14:16 #17
Super - så er vi alle glade! :-D

Svar gerne - så kan I dele pointene!

Tak for hjælpen!
Avatar billede olebole Juniormester
19. februar 2009 - 14:28 #18
- og selvtak  =)
Avatar billede olebole Juniormester
19. februar 2009 - 14:39 #19
Tak for points  =)
Avatar billede majbom Novice
19. februar 2009 - 17:02 #20
tak for point :)
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