Avatar billede jammerlab Nybegynder
04. marts 2008 - 21:53 Der er 14 kommentarer og
2 løsninger

Få popup til at fungere sammen med et slideshow

Hej alle sammen... håber i kan hjælpe mig for er lidt i vildrede...

Jeg har et langt javascript som gør at jeg kan lave et slidshow i mit galleri.. virker fint.. på nær en ting. Har et popup link på billede så man kan se det i fuld størrelse.. det link skifter dog ikke når billedet skifter med slideshowet...

Koden på linket er;

<a href=\"#\" onclick=\"popWin('$picture[path]');return false;\"><img id=\"picture\" width=\"$x\" height=\"$y\" class=main border=0 name=\"picture\" src=\"$picture[path]\"></a>

jeg kan ikke bruge id=\"picture\" på linket for så dør slideshowet.. kan jeg på en eller anden måde for det indarbejdet?? Jeg fatter ikke så meget af JS men det her er hvad en ven skrev;

Mads siger (18:34):
ellers lav en currentPicture variable
Mads siger (18:34):
og lad være med at send noget til popWin
Mads siger (18:35):
så bare få popWin til at hente currentPicture fra et globalt sted
Avatar billede tjens Nybegynder
04. marts 2008 - 23:35 #1
Jeg har et simpelt slideshow, som virker med link til fuld størrelse:
http://tjens.dk/webcam/hw/slideshow.html

Måske kan du finde inspiration i det, for der er ikke meget kode at læse.
Avatar billede thesurfer Nybegynder
05. marts 2008 - 00:04 #2
Det nemmeste ville nok være at tilføje et andet ID til dit link.. altså ikke "picture"..

Eksempel:

<a href=\"#\" id=\"linkpicture\" ..osv..>

Der hvor stien til billedet ændres (der arbejdes med "picture"), indsætter du bare en linie i stil med:

document.getElementById("linkpicture").href = "den nye sti";

Vis evt mere kode, så det bliver nemmere at give en løsning..
Avatar billede jammerlab Nybegynder
05. marts 2008 - 13:47 #3
Hej thesurfer og tjens...

jeg har prøvet med

  function showpic(picture)
  {
      document.getElementById('picture').src= picture['path'];
      document.getElementById('picture').width = picture['width'];
      document.getElementById('picture').height = picture['height'];
      document.getElementById("linkpicture").href = picture['path'];

  }

og <a href="#" id="linkpicture" onclick="popWin('$picture[path]');return false;">

men den ændre ikke stien på linket... i for lige hele koden til selve slideshowet og popup'en... der er lidt kode :)

  <script language="javascript" type="text/javascript">
    function popWin(file){
      newWin=window.open("","ResizeBillede","width=300,height=200,status=no");
      txt='<ht'+'ml><he'+'ad><ti'+'tle><? echo "$pic"; ?><\57ti'+'tle><scri';
      txt+='pt language="javascript" type="text/javascript">';
      txt+='function resPic(){h=document.images[0].scrollHeight;';
      txt+='w=document.images[0].scrollWidth;window.resizeTo(w+6,h+32);}<\57scri';
      txt+='pt><\57he'+'ad><bo'+'dy style="overflow:hidden;';
      txt+='border:0px;margin:0px"><i'+'mg src="'+file+'" style="top:0px;left:0px;border:0px;';
      txt+='" onload="resPic();"><\57bo'+'dy><\57ht'+'ml>';
      newWin.document.write(txt);
      newWin.document.close();
    }
  </script>
<script language="javascript" type="text/javascript">
<!--
  var i=0;
  var finished=false;
  var paused=false;
  var running=false;
  var pict = Array();
   
  function loadPics()
  {
    pict=<?=json_encode($pictures);?>
  }
  function next()
  {
      finished=false;
      if(i<pict.length-1)
      {
        i++;
        showpic(pict[i]);
      }
      else
      {
        i=0;
        showpic(pict[i]);
      }
  }
  function prev()
  {
      finished=false;
      if (i>0)
      {
        i--;
        showpic(pict[i]);
      }
      else
      {
        i=pict.length-1;
        showpic(pict[i]);
      }
  }

  function startSlide()
  {
      running=true;
      if(navigator.appVersion.indexOf("MSIE") == -1)
      {
        interval = setInterval(FFSlideshow,5000);
      }
      else
      {
        interval = setInterval(slideshow,5000);
      }
      document.getElementById("slideshow").disabled=true;
  }
  function slideshow()
  {
      if (i<pict.length-1)
      {
        document.getElementById('pictureContainer').filters[0].Apply();
        document.getElementById("slideshow").disabled=true;
        i++;
        showpic(pict[i]);
        document.getElementById('pictureContainer').filters[0].Play();
      }
      else if (i==pict.length-1 && finished==false)
      {
        document.getElementById("slideshow").disabled=false;
        finished=true;
        running=false;
        clearInterval(interval);
      }
      else
      {
        document.getElementById('pictureContainer').filters[0].Apply();
        i=0;
        finished=false;
        showpic(pict[i]);
        document.getElementById('pictureContainer').filters[0].Play();
      }
  }
  function FFSlideshow()
  {
      if (i<pict.length-1)
      {
        document.getElementById("slideshow").disabled=true;
        i++
        showpic(pict[i]);
      }
      else if (i==pict.length-1 && finished==false)
      {
        document.getElementById("slideshow").disabled=false;
        finished=true;
        running=false
        clearInterval(interval);
      }
      else
      {
        i=0;
        finished=false;
        showpic(pict[i]);
      }
  }
  function pause()
  {
      if(running==true)
      {
        if(paused==false)
        {
            paused=true;
            document.getElementById("pause").value="resume";
            clearInterval(interval);
        }
        else
        {
            paused=false;
                        document.getElementById("pause").value="pause";
            startSlide();
        }
      }
  }
 
  function resume()
  {
      if(running==true)
      {
        if(resume==false)
        {
            resume=true;
            document.getElementById("resume").value="pause";
            clearInterval(interval);
        }
        else
        {
            startSlide()
            resume=false;
        }
      }
  }
 
  function showpic(picture)
  {
      document.getElementById('picture').src= picture['path'];
      document.getElementById('picture').width = picture['width'];
      document.getElementById('picture').height = picture['height'];
      document.getElementById("linkpicture").href = picture['path'];
  }
</script>
Avatar billede jammerlab Nybegynder
05. marts 2008 - 23:49 #4
Anyone?
Avatar billede tjens Nybegynder
06. marts 2008 - 11:05 #5
I dit link
<a href="#" id="linkpicture" onclick="popWin('$picture[path]');return false;">
har de vel sat href ud af drift ved at have en onclick?

Prøv at ændre:
      document.getElementById("linkpicture").href = picture['path'];
til
      document.getElementById("linkpicture").onclick = "popWin('" + picture['path'] + "');return false;";
Avatar billede roenving Novice
06. marts 2008 - 16:52 #6
Eller:

<a href="#" id="linkpicture" onclick="popWin(this.href);return false;">

document.getElementById("linkpicture").href = picture['path'];
Avatar billede jammerlab Nybegynder
06. marts 2008 - 17:05 #7
Roenving> virker fint! :) på nær enting hehe... når jeg loader siden henter den et billede... når jeg så klikker på billedet har den jo ingen sti... dte for den først når jeg sætter slideshowet igang.. kan man give den en "default" sti? Som $picture[path] som så bliver overtaget når man starter slideshowet?

<a href="#" id="linkpicture" onclick="popWin(this.href);return false;">
Avatar billede jammerlab Nybegynder
06. marts 2008 - 17:07 #8
Ah ja det kunne jeg så godt :) Smid et svar tak :)

document.getElementById('linkpicture').src= picture['path'];

<a href="<? echo "$picture[path]"; ?>" id="linkpicture" onclick="popWin(this.href);return false;">
Avatar billede roenving Novice
06. marts 2008 - 17:19 #9
Det må vel være en deler !-)

-- velbekomme '-)
Avatar billede jammerlab Nybegynder
06. marts 2008 - 17:20 #10
Nu ved jeg godt jeg bliver lidt krævende... men er der nogen måde jeg kan lave et databaseudtræk lidt på samme måde... altså når billedet så ændre sig så har jeg et <div> hvor det samtidigt skifter med et databaseudtræk (php) ?? :/
Avatar billede jammerlab Nybegynder
06. marts 2008 - 17:24 #11
Altså så jeg for fyrret det her af hver gang den skifter billedet..

$query = mysql_query("SELECT * FROM img_mappe WHERE navn = "$picture" ORDER BY id DESC") or die(mysql_error());
Avatar billede tjens Nybegynder
06. marts 2008 - 20:40 #12
Ja, det kan du gøre ved at skrive et lille PHP-script der outputter de ønskede data, og så lade dit slideshow hente data via XMLHttpRequest:
http://w3schools.com/dom/dom_http.asp

Dog tager det jo lidt tid, så du skal måske udføre XMLHttpRequest inden du skifter billede, så data er klar, og så udføre billed og div skift samtidig.
Avatar billede jammerlab Nybegynder
07. marts 2008 - 08:14 #13
Takker :)
Avatar billede olebole Juniormester
07. marts 2008 - 15:51 #14
<ole>

tjens >> Nej, hold dig endelig _langt_ væk fra w3schools.com! Sitet er spækket til randen med fejl, mangler og misforståelser - og netop hans forsøg på at forklare Ajax går skråt op i ged. Hans forklaringer er skoleeksempler på, hvad Ajax ikke er - og hvordan man ikke bruger det!

Det er ikke uden grund, roenving for et par dage siden udbrød i en anden tråd: "Hvad Søren! Kan man nu endelig finde en hel side hos w3schools.com, uden fejl?"

/mvh
</bole>
Avatar billede jammerlab Nybegynder
07. marts 2008 - 17:39 #15
Det er noteret :)
Avatar billede roenving Novice
08. marts 2008 - 13:03 #16
-- og tak 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