PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehlerhafte Kommunikation: JS und PHP?


Loki84
02.04.2008, 17:25:55
Halli Hallo!

Ich bin über dieses Anfängerforum gestolpert, da ich ein Problem mit einer Homepage zu einer Rollenspielrunde habe, die ich mit einem Freund zusammen entwickle (er macht Grafik ich mache die Programmierung). Das Ganze soll nichts Komplexes werden, deshalb basiert mein Problem vermutlich auf irgendeiner dummen Tatsache, die ich übersehen habe.

Also: Die Hauptseite Index.php enthält alle Links zu den anderen Seiten. Die Grafiken zu den Links werden über folgende JS-Funktion (die ich im Netz gefunden habe) per Roll-Over-Effect verändert, wenn man mit der Maus drübergeht:

<script type="text/JavaScript">

function MM_swapImgRestore() {
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() {
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) {
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() {
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

</script>

Diese Funktion prima wenn die verschiedenen geslicten Grafiken per HTML eingebunden werden und funktioniert gar nicht, wenn sie per PHP (also per ECHO) eingebunden werden!

Beispiel:

<td rowspan="3">
<a href="gbook.php" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('gbook','','gfx/Dark-Spirits-Reloaded_on_12.jpg',1)"><img src="gfx/Dark-Spirits-Reloaded_12.jpg" name="gbook" border="0" width="75" height="49" alt=""></a></td>

-> Funktioniert 1A.

echo "<td rowspan=\"3\">";
echo "<a href=\"gbook.php\" onMouseOut=\"MM_swapImgRestore()\" onMouseOver=\"MM_swapImage(\"gbook\",\"\",\"gfx/Dark-Spirits-Reloaded_on_12.jpg\",1)\"><img src=\"gfx/Dark-Spirits-Reloaded_12.jpg\" name=\"gbook\" border=\"0\" width=\"75\" height=\"49\" alt=\"\"></a></td>";

-> Funktioniert nicht. Das heißt, wenn ich mit der Maus über den Link gehe, kommt kein Roll-Over-Effect! Dabei ist es egal, ob ich ' oder \" benutze.

Dabei müsste es eigentlich gehen, denn der PHP-Code macht ja nichts anderes als den HTML-Code (der ja funktioniert) auszugeben, oder übersehe ich da was?

Achja, der Grund warum ich alles mit "echo" ausgebe, ist, dass ich am Anfang des Dokuments per $_GET rausfinden will, welcher Link angeklickt wurde und dann den entsprechenden Teil der PHP-Datei laden will, anstatt für jeden Link eine einzelne PHP-Datei zu haben.

Ich hoffe, mein Problem ist einigermaßen verständlich und dass mir jemand helfen kann!

mfG

Loki84

The Serious Sam
02.04.2008, 18:15:29
echo "<a href=\"gbook.php\" onMouseOut=\"MM_swapImgRestore()\" onMouseOver=\"MM_swapImage(\"gbook\",\"\",\"gfx/Dark-Spirits-Reloaded_on_12.jpg\",1)\"><img src=\"gfx/Dark-Spirits-Reloaded_12.jpg\" name=\"gbook\" border=\"0\" width=\"75\" height=\"49\" alt=\"\"></a></td>";


mach mal das draus


echo "<a href=\"gbook.php\" onMouseOut=\"MM_swapImgRestore()\" onMouseOver=\"MM_swapImage('gbook','','gfx/Dark-Spirits-Reloaded_on_12.jpg',1)\"><img src=\"gfx/Dark-Spirits-Reloaded_12.jpg\" name=\"gbook\" border=\"0\" width=\"75\" height=\"49\" alt=\"\"></a></td>";

Loki84
02.04.2008, 18:56:06
Hallo, The Serious Sam!

Vielen Dank, jetzt funktioniert alles! Ich werd die Anführungsstriche bei den anderen Links dann einfach so machen, wie in deinem Beispiel.

Danke nochmals!

Loki84