16. maj 2004 - 11:38
Der er
29 kommentarer og 1 løsning
javascript i php
Jeg vil gerne kalde 2 javascript funktioner inde i en php if sætning: if (($new_pic != "./images/") && ($old_pic == "./images/" )) { echo "onMouseOver='DisplayImage("$new_pic")' onMouseOut='ShowHideLayer('Layer','','hide')'><a href="et eller andet">Vis billed</a>"; } $new_pic variablen indeholder stien til billedet. Hvad er syntaxen for koden i ifsætningen?
Annonceindlæg fra DE-CIX
Du skal huske på at det du udskriver er HTML. Hvordan skal HTML'en se ud?
hhmm.. kan ikke helt se om du husker at "starte / stoppe" PHP-delen - da du jo skal fortælle hvornår scripts skal eksekveres serverside (PHP) / klientside (JavaScript)
se evt. denne tråd hvor jeg skulle blande JavaScript og PHP:
http://exp.dk/spm/462218 (se løsningen nederst)
Problemet er jo at jeg ikke kan slutte PHP-delen, idet jeg skal bruge indholdet i php variablen $new_pic, som sendes til javascript DisplayImage funktionen. Kan se at jeg har et > tag for meget med da jeg oprettede spørgsmålet. Koden kommer til at se sådan ud: echo "onMouseOver='DisplayImage("$new_pic")' onMouseOut='ShowHideLayer('Layer','','hide')'<a href="et eller andet">Vis billed</a>";
nok mere som dette: onMouseOver='DisplayImage('<?php echo $new_pic')?>' onmouseOut='.... Som du kan se så køres "onMouseOver" Klientside - og under DisplayImage hentes new_pic via en PHP-kommando - dvs. serverside. (der er lidt bøvl med tegnet " , da det istedet skal være med tegnet ')
Jeg har lavet lidt om på koden, hvor et billed skal vises når musen føres henover et ikon/billed: Kode: <script language="javascript1.2" type="text/JavaScript"> <!-- function ShowHideLayer() { var i,p,v,obj,args=ShowHideLayer.arguments; for (i=0; i<(args.length-2); i+=3) if ((obj=FindObj(args[i]))!=null) { v=args[i+2]; if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; } obj.visibility=v; } } function DisplayImage(ImgName) { Layer.style.posTop=document.body.scrollTop+event.clientY-90; Layer.style.posLeft= 400; ImageShow.src = ImgName; Layer.style.visibility="visible"; } //--> </script> <td>"; ?> <img src='./images/kamera.jpg' onMouseOver='DisplayImage('<?php echo $new_pic ?>')' onMouseOut='ShowHideLayer('Layer','','hide')'> <?php echo "</td> Jeg kan dog stadig ikke få det til at virke. Nogen der kan se fejlen?
måske: <td>"; ?> <img src='./images/kamera.jpg' onMouseOver='DisplayImage('<?php echo $[new_pic] ?>')' onMouseOut='ShowHideLayer('Layer','','hide')'> <?php echo "</td>
Det giver en fejl når jeg anvender $[new_pic].
måske : <td>"; ?> <img src='./images/kamera.jpg' onMouseOver='DisplayImage('<?php echo $row[new_pic] ?>')' onMouseOut='ShowHideLayer('Layer','','hide')'> <?php echo "</td>
nej det virker stadig ikke
<img src="../images/kamera.jpg" onMouseOver="DisplayImage("<?php echo $new_pic ?>")" onMouseOut="ShowHideLayer("Layer",'',"hide")"> <?php echo "</td>"; ?>
Hvad med dette: <td>"; ?> <img src='./images/kamera.jpg' onMouseOver='DisplayImage(<?php echo $new_pic; ?>)' onMouseOut='ShowHideLayer('Layer','','hide')'> <?php echo "</td>
Får stadig fejlen: udført, men fejl på siden. Det skal også lige nævnes at jeg ikke får vist ikonet/billedet med ../images/kamera.jpg". Nedennænvte kode giver en fejl, men viser i det mindste ikonet: ?> <img src="./images/kamera.jpg" onMouseOver="DisplayImage("<?php echo $this->pic ?>")" onMouseOut="ShowHideLayer("Layer",'',"hide")"> <?php
Dit forslag tomat-ketchup giver desværre også en fejl på siden
<img src="./images/kamera.jpg" onMouseOver="DisplayImage(<?php echo $this->pic; ?>)" onMouseOut="ShowHideLayer('Layer','','hide')">
<img src="./images/kamera.jpg" onMouseOver="DisplayImage('<?php echo $this->pic; ?>')" onMouseOut="ShowHideLayer('Layer','','hide')"> manglede to '
nej desværre hellere ikke
Hvad er det for en javascript fejl?
Der opstod en fejl på siden. Hvis jeg trykker på fejlmeddelsesikonet i venstre hjørne af browseren kan jeg bl.a. se følgende fejlmeddelser: Linje: 11 Tegn: 7 Fejl: 'Layer'er ikke defineret kode: 0 Linje: 5 Tegn:41 Fejl: Et objekt var ventet kode: 0 De 2 fejl går igen på flere forskellige linier. Kan du bruge det til noget?
har du denne function med i din kode: function 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=FindObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } Kan du ikke vise linje 5?
Det er godt der er nogen som er vågen. Jeg havde ikke set at funktionen ShowHideLayer brugte funktionen FindObj. Efter jeg har indsat funktionen FindObj får jeg kun en error: Linje: 19 Tegn: 7 Fejl: 'Layer'er ikke defineret Kode:0 Linje 19 er en del af funktionen DisplayImage og ser sådan ud: Layer.style.posTop=document.body.scrollTop+event.clientY-90;
function DisplayImage(ImgName) { Layer=FindObj('layer'); Layer.style.posLeft= 400; ImageShow.src = ImgName; Layer.style.visibility="visible"; } Prøv det... ved ikke om det virker.
Nej nu får jeg en anden fejl. Linje: 20 Tegn: 6 Fejl: Et objekt er obligatorisk Kode:0 Linje 20: Layer.style.posLeft= 400; Nu da jeg har fået implementeret funktionen FindObj kan det så ikke være: <img src="./images/kamera.jpg" onMouseOver="DisplayImage('<?php echo $this->pic; ?>')" onMouseOut="ShowHideLayer('Layer','','hide')"> der er noget galt med?
function DisplayImage(ImgName) { Layer=FindObj('layer'); Layer.style.posTop=document.body.scrollTop+event.clientY-90; Layer.style.posLeft= 400; ImageShow.src = ImgName; Layer.style.visibility="visible"; } Dette? Tror ikke der er noget i vejen med <img src="./images/kamera.jpg" onMouseOver="DisplayImage('<?php echo $this->pic; ?>')" onMouseOut="ShowHideLayer('Layer','','hide')">
Får fejlen: Linje: 20 Tegn: 6 Fejl: Et objekt er obligatorisk Kode:0 Linie 20: Layer.style.posTop=document.body.scrollTop+event.clientY-90;
<ole> Prøv med en URL til et eksempel ... ellers bliver det bare en større gan Lykkehjulet :) Dit script finder tydeligvis ikke laget - men det er umuligt at se, hvor du laver fejl. /mvh </bole>
Den kode er _fuldstændig_ sort. Jeg fatter ikke meningen med den ... der er ikke noget at sige til, den ikke fungerer. Jeg kan ikke fortælle dig, hvad du skal gøre ved den, men det her skal du i hvert fald ikke gøre :) /mvh
olebole kan du så ikke give et eksempel på hvordan man skal gøre det med at display et billede ved "onMouseOver". F.eks. som man gør på
www.gate2prices.dk.
Har fundet ud af det nu. Manglede en div boks: <div id="Layer" style="position:absolute; left:180px; width:180px; visibility:hidden;"> <img src="/images/blank.gif" width="180" height="180" id="ImageShow"> </div>
Vi tilbyder markedets bedste kurser inden for webudvikling