Avatar billede nicolai_johannesen Nybegynder
21. september 2004 - 23:07 Der er 5 kommentarer

Åbne skjult layer i Iframe med OnClick

Hej eksperter (roenving)!

Mit problem er, at ikke kan aktivere et skjult layer i en Iframe med en onclick-funktion.

Jeg kunne forestille mig at scriptet indeholdt følgende elementer, som er vist i KnudGert's svar http://eksperten.dk/spm/220351.

Problemet er at href'en, som indeholder onclick-funktionen er placeret UDENFOR selve den iframe, hvori det skjulte layer ligger, og som jeg jo skal kunne åbne med-onclick-finktionen. Jeg har forsøgt mig med noget onClick="top.iframe.location.vis(1). Men kan ikke få det til at virke. Hvad gør jeg galt?

Jeg kan godt få KnudGert's script til at virke, når linket ikke er eksternt placeret udenfor selve iframen. Men altså ikke på den ønskede måde. Er der nogen der kan hjælpe?

På forhånd tak!
Avatar billede nicolai_johannesen Nybegynder
21. september 2004 - 23:08 #1
KnudGert's svar kan læses her:

<HTML><HEAD>
<TITLE> Vis/gem</TITLE>
<SCRIPT LANGUAGE="JavaScript">
show = 0
function vis(i){
if (show>0) gem(show)
show = i

if (document.layers)
  document.layers["image"+i].visibility='show';
else
  document.all["image"+i].style.visibility='visible';
}
function gem(i){
if (document.layers)
  document.layers["image"+i].visibility='hide';
else
  document.all["image"+i].style.visibility='hidden';
}
</SCRIPT>
</STYLE>
</HEAD>
<BODY>
<A HREF="#" onClick="vis(1)">vis1</A>
<A HREF="#" onClick="gem(1)">gem1</A>
<A HREF="#" onClick="vis(2)">vis2</A>
<A HREF="#" onClick="gem(2)">gem2</A>
<A HREF="#" onClick="vis(3)">vis3</A>
<A HREF="#" onClick="gem(3)">gem3</A>

<DIV ID="image1" style="position : absolute; left : 260px; top :50px;
visibility:hidden;">TEKST 1</DIV>
<DIV ID="image2" style="position : absolute; left : 120px; top :
110px; visibility:hidden">TEKST 2</DIV>
<DIV ID="image3" style="position : absolute; left:280; top:60;
visibility:hidden;">TEKST 3</DIV>
</BODY>
</HTML>

Teksten kan du jo bare skifte ud med en knap efter ønske.
Avatar billede roenving Novice
22. september 2004 - 00:32 #2
1. Knudgerts script er forældet, da det jo er afgivet i 2002, hvor NS4 stadig var en aktuel browser og de nyere Mozillaer, Netscape m.m.fl. ikke var alvorligt på banen ...

2. Du skal have fat i et element i det dokument, som ligger inde i iframen, så umiddelbart ville jeg bruge følgende konstruktion:

window.frames['IFRAMENAVN'].document.getElementById('LAYERNAVN').style.visibility='visible';

I en fornuftig vis/skjul funktion ville det så blive til:

<script type="text/javascript">

function visSkjul(id){
  var st = window.frames['IFRAMENAVN'].document.getElementById(id).style;
  st.visibility = (st.visibility!="visible")?"visible":"hidden";
}
</script>
Avatar billede knudgert Nybegynder
22. september 2004 - 05:45 #3
Det må vidst også være fra et gammelt indlæg, det er fundet frem.
Jeg kan ikke mindes, at have brugt det i umindelige tider.
Avatar billede nicolai_johannesen Nybegynder
23. september 2004 - 16:03 #4
Jeg løste problemet på denne måde, som ses i nedenstående.

Nu er problemet så bare, at min iFrame ikke kan sende besked om at den skal udvide sig, når det "skjulte layer" aktiveres. Den pågældende Iframe er "nested" ind i i alt to Iframes, så der i alt er tre niveauer. I de tre Iframes bruger jeg en ChekcHeight-funktion - men den indlæser automatisk ved onload. Så den eneste Iframe skal på en eller anden måde give den yderste Iframe besked om, at den er blevet opdateret...og derved ændre højden. Hvordan gør jeg det?


//Dette link er placeret i den midterste Iframe:

<a href="java script:;" onclick='iframe.document.getElementById("skjultlayer").style.display="inline";'>LINK</a>

//Denne kode er placeret i den pågældende iframe (den inderste iframe):

<!-- SKJULT LAYER | START -->
<span id="skjultlayer" style="display:none;">
<table width="594" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <td>TEKST-FELT TEKST-FELT TEKST-FELT</td>
    </tr>
</table>
</span>
<!-- SKJULT LAYER | END -->
Avatar billede nicolai_johannesen Nybegynder
23. september 2004 - 16:05 #5
//Sådan ser CheckHeight-funktionen ud:


<script language="JavaScript" type="text/JavaScript">
<!--
//tilpasser højden på iframen med indholdet
ie = (document.all) ? 1: 0;
function checkHeight(ifrm)
{
  ifrm.style.height = (ie) ? self[ifrm.name].document.body.scrollHeight+30+"px" : self[ifrm.name].document.height+30+"px";
}

-->
</script>
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