Avatar billede flash_g Nybegynder
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?
Avatar billede razor Nybegynder
16. maj 2004 - 12:12 #1
Du skal huske på at det du udskriver er HTML. Hvordan skal HTML'en se ud?
Avatar billede flash_g Nybegynder
16. maj 2004 - 12:25 #2
Det skal se ud som følgende link.

http://www.gate2prices.dk/hardware/hardwarescreen.asp

Efter søgningen kan man under model se billedet af skærmen blive vist når man kører musen hen over.
Avatar billede espersen Novice
16. maj 2004 - 12:39 #3
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)
Avatar billede flash_g Nybegynder
16. maj 2004 - 12:55 #4
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>";
Avatar billede espersen Novice
16. maj 2004 - 13:24 #5
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 ')
Avatar billede flash_g Nybegynder
16. maj 2004 - 15:42 #6
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?
Avatar billede espersen Novice
16. maj 2004 - 15:52 #7
måske:
<td>"; ?> <img src='./images/kamera.jpg' onMouseOver='DisplayImage('<?php echo $[new_pic] ?>')' onMouseOut='ShowHideLayer('Layer','','hide')'>    <?php echo "</td>
Avatar billede flash_g Nybegynder
16. maj 2004 - 15:59 #8
Det giver en fejl når jeg anvender $[new_pic].
Avatar billede espersen Novice
16. maj 2004 - 17:18 #9
måske :
<td>"; ?> <img src='./images/kamera.jpg' onMouseOver='DisplayImage('<?php echo $row[new_pic] ?>')' onMouseOut='ShowHideLayer('Layer','','hide')'>    <?php echo "</td>
Avatar billede flash_g Nybegynder
16. maj 2004 - 18:15 #10
nej det virker stadig ikke
Avatar billede beez Nybegynder
16. maj 2004 - 18:25 #11
<img src="../images/kamera.jpg" onMouseOver="DisplayImage("<?php echo $new_pic ?>")" onMouseOut="ShowHideLayer("Layer",'',"hide")">    <?php echo "</td>"; ?>
Avatar billede tomat-ketchup Nybegynder
16. maj 2004 - 18:38 #12
Hvad med dette:
<td>"; ?> <img src='./images/kamera.jpg' onMouseOver='DisplayImage(<?php echo $new_pic; ?>)' onMouseOut='ShowHideLayer('Layer','','hide')'>    <?php echo "</td>
Avatar billede flash_g Nybegynder
16. maj 2004 - 18:43 #13
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
Avatar billede flash_g Nybegynder
16. maj 2004 - 18:48 #14
Dit forslag tomat-ketchup giver desværre også en fejl på siden
Avatar billede tomat-ketchup Nybegynder
16. maj 2004 - 18:53 #15
<img src="./images/kamera.jpg" onMouseOver="DisplayImage(<?php echo $this->pic; ?>)" onMouseOut="ShowHideLayer('Layer','','hide')">
Avatar billede tomat-ketchup Nybegynder
16. maj 2004 - 18:54 #16
<img src="./images/kamera.jpg" onMouseOver="DisplayImage('<?php echo $this->pic; ?>')" onMouseOut="ShowHideLayer('Layer','','hide')">

manglede to '
Avatar billede flash_g Nybegynder
16. maj 2004 - 18:57 #17
nej desværre hellere ikke
Avatar billede tomat-ketchup Nybegynder
16. maj 2004 - 18:58 #18
Hvad er det for en javascript fejl?
Avatar billede flash_g Nybegynder
16. maj 2004 - 19:06 #19
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?
Avatar billede tomat-ketchup Nybegynder
16. maj 2004 - 19:32 #20
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?
Avatar billede flash_g Nybegynder
16. maj 2004 - 19:46 #21
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;
Avatar billede tomat-ketchup Nybegynder
16. maj 2004 - 20:02 #22
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.
Avatar billede flash_g Nybegynder
16. maj 2004 - 20:07 #23
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?
Avatar billede tomat-ketchup Nybegynder
16. maj 2004 - 20:19 #24
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')">
Avatar billede flash_g Nybegynder
16. maj 2004 - 20:25 #25
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;
Avatar billede olebole Juniormester
18. maj 2004 - 02:10 #26
<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>
Avatar billede flash_g Nybegynder
18. maj 2004 - 08:17 #27
Avatar billede olebole Juniormester
18. maj 2004 - 19:16 #28
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
Avatar billede flash_g Nybegynder
18. maj 2004 - 20:40 #29
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.
Avatar billede flash_g Nybegynder
19. maj 2004 - 15:32 #30
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>
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