---
title: "Problem med create layer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/109251-problem-med-create-layer"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "haider"
published: "2004-08-14T19:15:07.000Z"
updated: "2004-08-17T06:16:29.000Z"
replies: 10
views: 438
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/109251-problem-med-create-layer"
---

# Problem med create layer

## #1 — haider, 2004-08-14T19:15Z

Tjena

Detta script fick jag av Jojoxx för ett långt tag sen
Jag plockade upp det härom dagen, men upptäckte två problemos

<http://www.animadesign.se/test/createlayer.htm>

1) När man skapar lagret så sker det utan problem.
När man döljer det, så kan man se att raden där den tomma \<div\> finns blir högre.

Varför, och hur löser man det?

2) När man sedan klickar på Skapa lager igen, så går det inte. Det är nåt som överlappar vartannat, hur löser man det?

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

## #2 — Jojoxx, 2004-08-14T20:06Z

1) Egentligen borde det inte bli en tomrad eftersom ingenting som skapas i diven tar någon plats från sidflödet eftersom det som skapas är absolut-positionerat. Men vi löser det genom att även göra denna div absolut-positionerad.

2) Det är inte så konstigt eftersom första raden i hideCenteredLayerg gömmer lagret, sedan visas det aldrig igen. Men den första raden fyller ingen funktion eftersom man på raden efter tömmer innehållet i div'en.

Alltså:

```
Text<br>
Text
<br>
<div id="createLayerHere" style="position:absolute;top:0px;left:0px;"></div>
<p>Text<br>
Text</p>
<p>&amp;nbsp;</p>
<p>
  <script type="text/javascript">

function makeCeneteredLayer(id,width,height,style){
	var x=parseInt(((document.all)?document.body.clientWidth:window.innerWidth)/2-width/2);
	var y=parseInt(((document.all)?document.body.clientHeight:window.innerHeight)/2-height/2);
	document.getElementById('createLayerHere').innerHTML+='<div id="'+id+'" style=" position:absolute;top:'+y+'px;left:'+x+'px;width:'+width+'px;height:'+height+'px;'+style+'"></div>';
}

function hideCenteredLayer(){
	document.getElementById('createLayerHere').innerHTML=''; /* här rensar den innehållet från innan*/
}

</script>
</p>
  <p>&amp;nbsp;</p>
  <p><a href="javascript:makeCeneteredLayer('mitt_id',580,368,'border:solid blue 1px;');">Skapa lager</a><br>
  <a href="javascript:hideCenteredLayer();">D&amp;ouml;lj lager</a>  </p>
<p>&amp;nbsp;</p>
<p>&amp;nbsp;</p>
```

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

## #3 — haider, 2004-08-14T20:15Z

You are THE man!

tack

Jag upptäckte dock ett annat problem, som jag inte visste att jag hade

Det verkar som om centreringen i höjdled inte fungerar, alltså när den skapar lagret, så tycks den skapa den längst upp, inte centrerat där man råkar befinna sig

Observera att lagret visas inne i en hög iframe. Det är därför den ska befinna sig centrerat i höjdled i den "aktiva" ytan av iframen

Kan problemet bero på **style="position:absolute;top:0px;left:0px;"** ?

Hur gör man då?

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

## #4 — Jojoxx, 2004-08-15T07:13Z

Ändra dokumenttypsdefinitionen (första taggen i koden) till:

```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
```

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

## #5 — haider, 2004-08-15T12:29Z

Tack, det funkade när man kör sidan för sig själv, dock inte när den placeras i en iframe   :(

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

## #6 — Jojoxx, 2004-08-15T19:57Z

Kolla dokumenttypsdefinitionen även i det andra dokumentet.

[Exakt exempel](http://www.jojoxx.net/wF/106838.html).

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

## #7 — haider, 2004-08-16T06:13Z

OK
Men nu när jag placerade sidan i ett vanligt frameset tycks det inte fungera

Hur stor betydelse har egentligen dokumenttypsdefinitionen?

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

## #8 — Jojoxx, 2004-08-16T06:28Z

[Frame-exempel](http://www.jojoxx.net/wF/106838fr.html).

> **haider skrev:**
>
> Hur stor betydelse har egentligen dokumenttypsdefinitionen?

Om vi enbart tittar på JavaScript så har den fått större betydelse på sista tiden i IE där objektmodellen ändrar sig beroende på vad du talar om att det är för typ av dokument. Detta är ett typ-exempel.

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

## #9 — haider, 2004-08-16T09:49Z

Du det funkar inte.

Om du gör så, att du skriver en en mängd rader neders, så att sidan börjar scrolla, och att du scrollar, så att du befinner dig i en annan höjd, så kommer du att se att det inte blir rätt.

Det verkar som om den skapar den centrerat med hänsyn till var länken finns, inte var i höjden på framen/iframen man befinner sig i.

Det man vill ju centrera i höjden på fönstrets innerhöjd, är det inte det som du kallar för **window.innerHeight**  ?

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

## #10 — Jojoxx, 2004-08-16T14:32Z

> **haider skrev:**
>
> Det man vill ju centrera i höjden på fönstrets innerhöjd, är det inte det som du kallar för window.innerHeight ?

window.innerHeight används av Mozilla, men det som returneras är storleken om aktuellt fönster (eller frame), problemet är bara att lagrets position är angivet från topp/vänster i bodyn, oavsett var scroll-listan är placerad. Skall man ta hänsyn till scroll-listan blir det så här:

```
function makeCeneteredLayer(id,width,height,style){
	var x=getScrollX()+parseInt(((document.all)?document.body.clientWidth:window.innerWidth)/2-width/2);
	var y=getScrollY()+parseInt(((document.all)?document.body.clientHeight:window.innerHeight)/2-height/2);
	document.getElementById('createLayerHere').innerHTML+='<div id="'+id+'" style="  position:absolute;top:'+y+'px;left:'+x+'px;width:'+width+'px;height:'+height+'px;'+style+'"></div>';
}
function getScrollX(){ return(document.all)?document.body.scrollLeft:pageXOffset; }
function getScrollY(){ return(document.all)?document.body.scrollTop:pageYOffset; }

function hideCenteredLayer(){
	document.getElementById('createLayerHere').innerHTML=''; /* här rensar den innehållet från innan*/
}
```

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

## #11 — haider, 2004-08-17T06:16Z

Härligt!

Den här gången funkade det!
Tänk att jag inte klargjort redan från början detta med hänsyn till scrollen - jag hade för mig hela tiden att det funkade, men att problemet var nåt helt annat

tack!

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/109251-problem-med-create-layer
