Avatar billede andy Nybegynder
28. april 2004 - 11:02 Der er 3 kommentarer og
1 løsning

layer, javascript og xhtml

Jeg har et lille problem med at flytte et div-layer i XHTML med javascript. Min kode virker fint i både IE og Firefox hvis jeg angiver doctype til HTML 4.01, men altså ikke med XHTML 1.0 eller 1.1.

Det skal dog siges at javascriptet virker i IE uanset doctype.

http://www.agehrke.com/exp/xhtml.html
http://www.agehrke.com/exp/html4.html

Hvad gør jeg galt?
Avatar billede roenving Novice
28. april 2004 - 13:57 #1
Jeg prøvede ikke for alvor, så jeg har ikke nærmere overvejet om det kan gøres smartere, men:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
<!--
body,td,th {
    font-family: Verdana, Arial, Helvetica, sans-serif;
}
#tester {
    border: 1px solid #000000;
    width: 150px;
    background-color: #FFFFFF
    height: 100px;
}
-->
</style></head>

<body>
<div id="tester" style="visibility: hidden; position: absolute; z-index: 1;">dfgfdgfdgfdgdfgdfg</div>
<p>
<script type="text/javascript">
var dom = (document.getElementById)?true:false;
var ie = (document.all)?true:false;

var pageX=0;
var pageY=0;
var actlayer = null;

function getLayer(id){
  return (dom)?document.getElementById(id):document.all[id];
}
function showlayer(whichLayer) {   
    actlayer = getLayer(whichLayer);
    actlayer.style.visibility = "visible";
}
function changehtml(html) {
    actlayer.innerHTML = html;
    movelayer();
}
function hidelayer(whichLayer) {
    actlayer.style.visibility = "hidden";
    actlayer = null;
}
function movelayer() {
    if(!actlayer)return;
  actlayer.style.left = ((ie)?document.body.scrollLeft+event.clientX:pageX)+50+'px';
    actlayer.style.top = ((ie)?document.body.scrollTop+event.clientY:pageY)-20+'px';
}
function my_test(event) {
    if(!actlayer)return;
    pageX = event.pageX;
    pageY = event.pageY;
    movelayer();
}

if (!ie){ document.onmousemove=my_test; }
</script>
</p>
<p>&nbsp;</p>

<p>&nbsp;</p>
<p><a href="#" onmouseover="showlayer('tester')" onmousemove="movelayer('tester')" onmouseout="hidelayer('tester')">Mouseover!</a></p>
</body>
</html>
Avatar billede andy Nybegynder
28. april 2004 - 14:27 #2
mange tak. Det var altså 'px' jeg manglede :)

Smider du et svar?
Avatar billede roenving Novice
28. april 2004 - 14:34 #3
-- næh det var ikke det eneste, men noget af det væsentligste, for jeg måtte jo også sørge for, elementet var kendt, når mouseover blev udløst ...

-- og som skrevet står, har jeg ikke gået ind i overvejelser om der evt. var bedre måder at gøre det på, for det er jeg næsten sikker på, at f.eks. grunken kunne have givet ...

-- velbekomme '-)
Avatar billede roenving Novice
28. april 2004 - 15:18 #4
-- og tak for points ;~}
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