---
title: "Fel med layer och NS"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/18290-fel-med-layer-och-ns"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Vide"
published: "2001-10-03T20:20:00.000Z"
updated: "2001-10-05T15:07:00.000Z"
replies: 9
views: 231
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/18290-fel-med-layer-och-ns"
---

# Fel med layer och NS

## #1 — Vide, 2001-10-03T20:20Z

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

Permalänk: https://www.webforum.nu/p/18290

## #2 — Volta, 2001-10-04T17:09Z

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](http://www.javascript.nu).

Permalänk: https://www.webforum.nu/p/334739

## #3 — Vide, 2001-10-04T19:27Z

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;
}
}
```

Permalänk: https://www.webforum.nu/p/334740

## #4 — Vide, 2001-10-04T20:11Z

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>

Permalänk: https://www.webforum.nu/p/334741

## #5 — Jojoxx, 2001-10-05T05:41Z

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\>

Permalänk: https://www.webforum.nu/p/334742

## #6 — Vide, 2001-10-05T06:37Z

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.. ;)

Permalänk: https://www.webforum.nu/p/334743

## #7 — Jojoxx, 2001-10-05T09:43Z

I alla versioner jag har testat så struntar den i \<layer\> ...och som sagt, kopior av event-satserna, inte flytta :)

Permalänk: https://www.webforum.nu/p/334744

## #8 — Vide, 2001-10-05T12:06Z

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...

Permalänk: https://www.webforum.nu/p/334745

## #9 — Vide, 2001-10-05T12:10Z

IE visa alla \<layer\>-taggar också... så den lösningen gick inte...

Permalänk: https://www.webforum.nu/p/334746

## #10 — Jojoxx, 2001-10-05T15:07Z

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

Permalänk: https://www.webforum.nu/p/334747

---

Tråden på webben: https://www.webforum.nu/amne/javascript/18290-fel-med-layer-och-ns
