Avatar billede vat69 Nybegynder
21. november 2005 - 13:17 Der er 14 kommentarer og
1 løsning

skift et billede

Hej jeg har en funktion der skifter et billede som jeg har sat foran et link. Dette virker fint. Problemet er nu at der skal være flere af det samme billede på siden.
Disse "dannes" via PHP i en <div> der omslutter dem og det er forskelligt hvor mange links der dannes (alt efter brugerens valg)

Hvordan får jeg min funktion til at skifte nøjagtig det billede som brugeren har klikket på.
Det må være noget med at give billedet en variable bag ved sit id som automatisk tæller en op hvis der dannes en ny <div> med et billede i. Og i funktionen skal denne variable så sendes med så funktionen "ved" hvilkent af billederne den skal skifte. Det er min teori, men ja praktisk kan jeg ikke få det til at virke.

Her er min funktion (som jeg helst vil bygge dette på):
<script type="text/javascript">

function SkiftPil() {
if(skift_pil.src.match('<?=$baseDir;?>/images/pil_right.gif')){
    skift_pil.src = "<?=$baseDir;?>/images/pil_down.gif";
}
else{
skift_pil.src="<?=$baseDir;?>/images/pil_right.gif";
}

}
</script>

Og her er min <div> med id på billedet:
<div class="menutitle" onclick="SkiftMenu('sub<?=$x;?>'); SkiftPil();"><img src="<?=$baseDir;?>/images/pil_slet_kurv.gif" width="41" height="17" border="0" id="skift_pil" /></div>

Til info: Det der sker er at åbners en hidden div når man klikker på billedet.

MVH
Vat69
Avatar billede roenving Novice
21. november 2005 - 13:39 #1
Hvad med at kaste onclicken ind på billedet, for så kan vi jo sende det med !-)

<div class="menutitle"><img src="<?=$baseDir;?>/images/pil_slet_kurv.gif" width="41" height="17" border="0" onclick="SkiftMenu('sub<?=$x;?>'); SkiftPil(this);" /></div>

-- og så:

function SkiftPil(pic) {
if(pic.match(/_right.gif$/))
  pic.src = "<?=$baseDir;?>/images/pil_down.gif";
else
  pic.src = "<?=$baseDir;?>/images/pil_right.gif";
}
</script>
Avatar billede vat69 Nybegynder
21. november 2005 - 14:55 #2
Næ det virker desværre ikke, den skjulte div åbner fint men billedet med pilen skifter desværre ikke.
Ved at gøre det på overnævnte måde (og hvis det virkede) slipper man for at sætte et bestemt id på img´et?
Jeg er ikke så skarp til javaS. men pic som skrives i funktionen er det noget globalt indbygget i JavaS der henviser til billedet?
Avatar billede roenving Novice
21. november 2005 - 15:00 #3
Bemærk this i SkiftPil(this) !-)

-- this er et indbygget keyword i javascript, som henviser til det aktuelle objekt, altså her selve img-objektet !o]
Avatar billede vat69 Nybegynder
21. november 2005 - 15:08 #4
Jeg har ikke overset this så det er med... :)
Avatar billede roenving Novice
21. november 2005 - 15:10 #5
Argh, der er jo en fejl i scriptet:

if(pic.src.match(/_right.gif$/))
Avatar billede vat69 Nybegynder
21. november 2005 - 15:50 #6
Doh burde jeg også ha set.... men det virker selvfølgelig  nu :)

der opstår dog et andet problem, ved funktionen SkiftMenu. når man åbner en anden div uden at ha trykket på den div der aktiv lukker den aktive div og en ny åbnes, problemet er så at det billede der lige er skiftet jo så ikke skifter tilbage da det er funktionen SkiftMenu der kaldes. Kan man slå to funktioner sammen  så de afvikles i en overordnet funktion?

(du har tjent dine point så du må få nogle ekstre hvis du lige har et hurtigt svar parat)

Min SkiftMenu funktion:

/* Skift Menu start */

if (document.getElementById){
document.write('<style type="text/css">\n')
document.write('.submenu{display: none;}\n')
document.write('</style>\n')
}


function SkiftMenu(obj){
    if(document.getElementById){
    var el = document.getElementById(obj);
    var ar = document.getElementById("masterdiv").getElementsByTagName("span");
        if(el.style.display != "block"){
            for (var i=0; i<ar.length; i++){
                if (ar[i].className=="submenu")
                ar[i].style.display = "none";
            }
            el.style.display = "block";
        }else{
            el.style.display = "none";
        }
    }

}
/* SLUT skift Menu  */
Avatar billede roenving Novice
21. november 2005 - 15:56 #7
F.eks.

function SkiftMenu(obj,pic){
    if(document.getElementById){
    var el = document.getElementById(obj);
    var ar = document.getElementById("masterdiv").getElementsByTagName("span");
        if(el.style.display != "block"){
            for (var i=0; i<ar.length; i++){
                if (ar[i].className=="submenu")
                ar[i].style.display = "none";
                ar[i].getElementsByTagName("img")[0].src = ar[i].getElementsByTagName("img")[0].src.replace(/_down\.gif$/,"_right.gif");
            }
            el.style.display = "block";
            pic.src = pic.src.replace(/_right\.gif$/,"_down.gif");
        }else{
            el.style.display = "none";
            pic.src = pic.src.replace(/_down\.gif$/,"_right.gif");
        }
    }

}

-- og:

<div class="menutitle"><img src="<?=$baseDir;?>/images/pil_slet_kurv.gif" width="41" height="17" border="0" onclick="SkiftMenu('sub<?=$x;?>',this);" /></div>
Avatar billede vat69 Nybegynder
21. november 2005 - 16:13 #8
Den åbner og viser godt nok de skjulte div men billedet, men billedet skifter den ikke :(
Avatar billede roenving Novice
21. november 2005 - 22:53 #9
Kan du linke til et eksempel ?-)
Avatar billede vat69 Nybegynder
22. november 2005 - 19:53 #10
Har ikke lagt noget ud der er kun på lokal host. jeg skal nok ligge noget ude, har dog været hængt op hele dagen og også nu ligger noget ud i morgen :)
Avatar billede roenving Novice
22. november 2005 - 21:40 #11
¡Muy Bueno !-)
Avatar billede vat69 Nybegynder
24. november 2005 - 08:30 #12
Hej roenving, har for meget at se til så kan du ikke lægge et svar så får du dine velfortjente point. Hvis jeg så ikke kan hitte ud af det andet når jeg kommer så langt kan jeg jo altid lægge et spg. ud hvor du har første ret til point :) er det i orden?
Avatar billede roenving Novice
24. november 2005 - 13:43 #13
Oki '-)

-- og du kan jo bare lægge noget i denne tråd, så får jeg jo en mail !-)
Avatar billede vat69 Nybegynder
24. november 2005 - 15:06 #14
Ok det gør jeg hvis det bliver nødvendig :) Takker for hjælpen.
Avatar billede roenving Novice
25. november 2005 - 15:11 #15
-- og jeg takker for point ;~}
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