TroyPan: Interne Zeiger auf nen Layer ?? oder was mach ich hier falsch ?

Beitrag lesen

Hallo !

Mit diesem Script werd ich noch wahnsinnig !! *arg* es wird von einem PHP-Script dynamisch erzeugt und funktioniert auch fast so wie es soll. Das PHP-Script erzeugt das JavaScript und die benötigte Anzahl Layer mit unterschiedlichen namen. Das JavaScript soll nun einen bestimmten Layer mit der Funktion visiblebox() sichtbar machen. Welcher das ist, wird vorher mit der Variable BoxNr=x festgelegt. Wie gesagt das funzt alles wunderbar. Nun kann man die Layer auch per DragAndDrop verschieben. Und hier hakt es, denn mann kann nur den zuletzt sichtbar gemachten Layer verschieben. Wenn man nun einen früheren noch einmal duchr das ausführen der Funktion visiblebox() sichtbar mach, auch wenn er schon sichtbar ist, kann man nun dieses zuletzt sichtbar gemachten verschieben.
Allerdings funktioniert das nicht, wenn ich visiblebox() einfach mit in den Layer der verschoben werden soll einbaue.
Ich vermute mal das es da irgendwo einen internen "Zeiger" gibt ?!?
Ich bin kurz vorm wahnsinnig werden. Helft mir doch bitte mal ein kleines Stückchen weiter.
Thanks a lot !!
Troy

Hier das Script:

<script language="JavaScript1.2">

//Popup Box- By Jim Silver @ jimsilver47@yahoo.com

var ns4=document.layers
var ie4=document.all
var ns6=document.getElementById&&!document.all
var Ausgabe=""

//drag drop function for NS 4////
/////////////////////////////////

var dragswitch=0
var nsx
var nsy
var nstemp

function drag_dropns(name){
if (!ns4)
return
temp=eval(name)
temp.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP)
temp.onmousedown=gons
temp.onmousemove=dragns
temp.onmouseup=stopns
}

function gons(e){
temp.captureEvents(Event.MOUSEMOVE)
nsx=e.x
nsy=e.y
}
function dragns(e){
if (dragswitch==1){
temp.moveBy(e.x-nsx,e.y-nsy)
return false
}
}

function stopns(){
temp.releaseEvents(Event.MOUSEMOVE)
}

//drag drop function for ie4+ and NS6////
/////////////////////////////////

function bew(){
crossobj0=ns6? document.getElementById("showimage0") : document.all.showimage0;
crossobj1=ns6? document.getElementById("showimage1") : document.all.showimage1;

}

function drag_drop(e){

if(BoxNr==0) {
 if (ie4&&dragapproved){
 crossobj0.style.left=tempx+event.clientX-offsetx
 crossobj0.style.top=tempy+event.clientY-offsety
 return false
 }
 else if (ns6&&dragapproved){
 crossobj0.style.left=tempx+e.clientX-offsetx
 crossobj0.style.top=tempy+e.clientY-offsety
 return false
 }
}

if(BoxNr==1) {
 if (ie4&&dragapproved){
 crossobj1.style.left=tempx+event.clientX-offsetx
 crossobj1.style.top=tempy+event.clientY-offsety
 return false
 }
 else if (ns6&&dragapproved){
 crossobj1.style.left=tempx+e.clientX-offsetx
 crossobj1.style.top=tempy+e.clientY-offsety
 return false
 }
}
}

function initializedrag(e){

crossobj0=ns6? document.getElementById("showimage0") : document.all.showimage0
crossobj1=ns6? document.getElementById("showimage1") : document.all.showimage1

var firedobj=ns6? e.target : event.srcElement
var topelement=ns6? "HTML" : "BODY"

if(BoxNr==0) {
 while (firedobj.tagName!=topelement&&firedobj.id!="dragbar0"){
 firedobj=ns6? firedobj.parentNode : firedobj.parentElement
 }
}

if(BoxNr==1) {
 while (firedobj.tagName!=topelement&&firedobj.id!="dragbar1"){
 firedobj=ns6? firedobj.parentNode : firedobj.parentElement
 }
}

if(BoxNr==0) {

if (firedobj.id=="dragbar0"){
 offsetx=ie4? event.clientX : e.clientX;
 offsety=ie4? event.clientY : e.clientY;

tempx=parseInt(crossobj0.style.left);
 tempy=parseInt(crossobj0.style.top);

dragapproved=true
 document.onmousemove=drag_drop
 }
}

if(BoxNr==1) {

if (firedobj.id=="dragbar1"){
 offsetx=ie4? event.clientX : e.clientX;
 offsety=ie4? event.clientY : e.clientY;

tempx=parseInt(crossobj1.style.left);
 tempy=parseInt(crossobj1.style.top);

dragapproved=true
 document.onmousemove=drag_drop
 }
}

}
document.onmousedown=initializedrag
document.onmouseup=new Function("dragapproved=false")

////drag drop functions end here//////

function hideboxall(){
 if (ie4||ns6) {
    crossobj0.style.visibility="hidden";
    crossobj1.style.visibility="hidden";
   } else {
  if (ns4) {
    document.showimage0.visibility="hide";
    document.showimage1.visibility="hide";

}
 }
}

function hidebox(){

if(BoxNr==0) {
 if (ie4||ns6)
  crossobj0.style.visibility="hidden"
 else if (ns4)
  document.showimage0.visibility="hide"
 }

if(BoxNr==1) {
 if (ie4||ns6)
  crossobj1.style.visibility="hidden"
 else if (ns4)
  document.showimage1.visibility="hide"
 }
}

function visiblebox(){

if(BoxNr==0) {
 if (ie4||ns6) {
  crossobj0.style.visibility="visible"
 } else {
  if (ns4) {
   document.showimage0.visibility="visible"
  }
 }
}

if(BoxNr==1) {
 if (ie4||ns6) {
  crossobj1.style.visibility="visible"
 } else {
  if (ns4) {
   document.showimage1.visibility="visible"
  }
 }
}
}
</script>

Hier einer der Layer:

<div id="showimage1" style="position:absolute;width:250px;left:400;top:250">
 <table border="0" width="250" bgcolor="#000080" cellspacing="0" cellpadding="2">
   <tr>
     <td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0"
     height="36">
       <tr>
         <td id="dragbar1" style="cursor:hand" width="100%">
         <ilayer width="100%" onSelectStart="return false">
         <layer width="100%" onMouseover="BoxNr=1;dragswitch=1;if (ns4) drag_dropns(showimage1)" onMouseout="dragswitch=0"><font face="Arial, Helvetica, sans-serif" size="2"
         color="#FFFFFF"><div id="Titel1">Detalis von <b>Karl</b> zur Unterkunft <b>Thüringer Hof</b></div></font></layer></ilayer></td>
         <td style="cursor:hand" valign="middle"><a href="#" onClick="BoxNr=1;hidebox();return false"><b><font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF">X</font></b></a></td>
       </tr>
       <tr>
         <td width="100%" bgcolor="#FFFFFF" style="padding:4px" colspan="2">
  <!-- Inhalt ---->

<!-- Inhalt----->

</td>
       </tr>
     </table>
     </td>
   </tr>
 </table>
 </div>