Interne Zeiger auf nen Layer ?? oder was mach ich hier falsch ?
TroyPan
- javascript
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>
Hallo !
auch so,
einmal Script lesen kostet 50 Euro (heute Sonderpreis).
Gruß, Andreas