VideMedlem sedan dec. 19998 577 inlägg Tjena,
Jag får felmeddelandet:
document.layers[strLay] has no properties
På koden:
function change_layer(strLay, bolShow)
{
w = 650;
h = 320;
if (document.all)
{
document.all[strLay].style.visibility = bolShow;
document.all[strLay].style.pixelLeft = w;
document.all[strLay].style.pixelTop = h;
}
else if (document.layers)
{
document.layers[strLay].visibility = bolShow;
document.layers[strLay].left = w;
document.layers[strLay].top = h;
}
else if (document.getElementById)
{
document.getElementById(strLay).style.visibility = bolShow;
document.getElementById(strLay).style.left = w;
document.getElementById(strLay).style.top = h;
}
}
Jag är ju ingen kung på javascript, så felet är säkert enkelt... ;)
Mvh, Vide
------------------
Doesn't 'expecting the unexpected' make the unexpected expected?
webeye.nu
VoltaMedlem sedan okt. 200117 inlägg Jag är inte mästare på Netscape men jag har ett förslag. I Netscape 4.x måste en DIV tagg ha attributet STYLE="position: absolute;" för att tolkas som ett lager. Koden blir alltså följande.
<DIV STYLE="position: absolute;">Lagrets innehåll</DIV>
Om detta inte löser problemet kanske du ska titta in på javascript.nu.
------------------
Copyright © 2001, av Ted Johansson för apelgren.cjb.net.
[Redigerat av Volta den 04 okt 2001]
VideMedlem sedan dec. 19998 577 inlägg Hejsan!
Jo, det har jag... jag kan lägga in den kod jag har för mitt layer:
<div id="textblock_asp" style="position:absolute;" onmouseover="change_layer('textblock_asp', 'visible');" onmouseout="change_layer('textblock_asp', 'hidden');">
<table width="170" border="1" bordercolor="#000000" cellspacing="0" cellpadding="2" class="bgrnd">
<tr>
<td width="170" align="left">
<%=strASPartikles%>
</td>
</tr>
</table>
</div>
Felmeddelandet pekar på denna raden:
function change_layer(strLay, bolShow)
{
w = 650;
h = 320;
if (document.all)
{
document.all[strLay].style.visibility = bolShow;
document.all[strLay].style.pixelLeft = w;
document.all[strLay].style.pixelTop = h;
}
else if (document.layers)
{
[b]document.layers[strLay].visibility = bolShow;[/b]
document.layers[strLay].left = w;
document.layers[strLay].top = h;
}
else if (document.getElementById)
{
document.getElementById(strLay).style.visibility = bolShow;
document.getElementById(strLay).style.left = w;
document.getElementById(strLay).style.top = h;
}
}
------------------
Doesn't 'expecting the unexpected' make the unexpected expected?
webeye.nu
VideMedlem sedan dec. 19998 577 inlägg Felet verkar ha varit att NS inte klarade av att det fanns ett "_" i namnet. :l
Men nu till ett följdproblem, hur får jag NS att behålla lagret när man har musen över lagret?
Kolla längst till höger under "Genvägar"... http://www.webeye.nu
------------------
Doesn't 'expecting the unexpected' make the unexpected expected?
webeye.nu
JojoxxMedlem sedan juni 20004 308 inlägg Netscape 4.x reagerar inte på events i <div>, men däremot på i <layer>. Du kan lägga <layer onMouseover="... direkt efter <div ...> och avsluta det med </layer> före </div>
------------------
/ J
VideMedlem sedan dec. 19998 577 inlägg Okej, men hur reagerar IE på att man har det i layer istället?
[r.] Inte "istället" förstås, men att man flyttar eventsen till layer.. ;)
------------------
Doesn't 'expecting the unexpected' make the unexpected expected?
webeye.nu
[Redigerat av Vide den 05 okt 2001]
JojoxxMedlem sedan juni 20004 308 inlägg I alla versioner jag har testat så struntar den i <layer> ...och som sagt, kopior av event-satserna, inte flytta :)
------------------
/ J
VideMedlem sedan dec. 19998 577 inlägg Det blir fel eftersom båda har samma id. Skall det vara så jobbigt att man måste ange att båda lagrena skall visas i onmouseover?
Verkar lite väl jobbigt för en så simpel grej...
------------------
Doesn't 'expecting the unexpected' make the unexpected expected?
webeye.nu
VideMedlem sedan dec. 19998 577 inlägg IE visa alla <layer>-taggar också... så den lösningen gick inte...
------------------
Doesn't 'expecting the unexpected' make the unexpected expected?
webeye.nu
JojoxxMedlem sedan juni 20004 308 inlägg Nej, du skall alltså bara använda <layer>-elementet för att lägga eventen i, inte ge den ett nytt id. Däremot märkte jag att Netscape 6 fortfarande stödjer <layer>, så då får man solla bort det med en if-sats.
<div id="foo" style="position:absolute;top:50px;left:50px;" onMouseover="en_funktion();"><layer onMouseover="if(document.layers){ en_funktion(); }">
...innehåll...
</layer></div>
Tillägg;
Lagret som sådant är givetvis fortfarande det du definierar i <div>-elementet oavsett webbläsare. Skall du ex. flytta det är det fortfarande "foo" du refererar till i alla webbläsare. Det är bara det att eventet fångas upp i <layer> istället för <div> i Netscape 4.x
------------------
/ J
[Redigerat av Jojoxx den 05 okt 2001]