26. august 2003 - 12:11Der er
99 kommentarer og 1 løsning
Image "Frem/Tilbage" script.
Nogen der ligge inde med et: Skift billeder "FREM/TILBAGE" script. Scriptet skulle meget gerne, ved klik på "Frem" link, kunne fremvise næste billede fra en folder, hvor alle billeder ligger gemt som 1,2,3,4 osv. Det skulle ligeledes gerne være muligt at kunne angive et MAX antal billeder, således at scriptet ved, hvornår sidste billeder er fremvist.
Dermed defineres manuelt kun: Folder + Max antal billeder.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD> <TITLE>Slideshow</TITLE> <META NAME="Generator" CONTENT="Stone's WebWriter 3.5"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <SCRIPT LANGUAGE="javascript" TYPE="text/javascript"> // Slideshow v1.0 // http://www.dithered.com/javascript/slideshow/index.html // code by Chris Nott (chris@NOSPAMdithered.com - remove NOSPAM) /* Modified 2003 by roenving to support multiple slides pr. page */ var slideshowImageDirectory = ''; var slideshowImageFiles = new Array(); var numSlidesPerPage = 3;
var slideshowSlides = new Array('bjergtoppe.jpg','solnedgang.jpg','vinter.jpg','åkander.jpg'); var slideshowCurrent = 0;
// Preload slideshow images function slideshowInit() { if (document.images) { for (var i = 0; i < slideshowImageFiles.length; i++) { slideshowSlides[i] = new Image(); slideshowSlides[i].src = slideshowImageDirectory + slideshowImageFiles[i]; } } }
function prevPage(){ for (i=0;i<numSlidesPerPage;i++){ bilde = document.images[i]; slideShowBackward(bilde); } }
function nextPage(){ for (i=0;i<numSlidesPerPage;i++){ bilde = document.images[i]; slideShowForward(bilde); } }
// Show next slide function slideshowForward(bilde) { if (document.images && typeof slideshowSlides != 'undefined') { slideshowCurrent++; if (slideshowCurrent >= slideshowSlides.length) slideshowCurrent = 0; bilde.src = slideshowSlides[slideshowCurrent].src; } }
<body> <center> <script language="JavaScript" type="text/javascript"> <!-- var number = 0; number = displayItem("id"); document.write("<img src=\"" + number + ".jpg\" height=\"500\">"); document.write("<br><br>");
if (number > 1) { document.write("<a href=\"visbilled.htm?id="+(number-1)+"\">forrige</a>"); } document.write(" ");
if (number < 35) { document.write("<a href=\"visbilled.htm?id="+(number-0+1)+"\">næste</a>"); } document.write("<br><br>"); document.write("Du ser på billede "+number+" ud af 35."); //--> </script>
Nederst på siden står der 2 steder 35 ... det skal du bare ændre til det antal billeder du har.
Fordelen ved denne frem for den roenving kom med er at du slipper for at angive i din array hvad billederne hedder. Du skal blot smide koden i en fil og smide den i din billed mappe. Billederne skal være af typen *.jpg hvor de skal starte med 1 osv. Hvis de skal være af typen gif skal du bare ændre jpg til gif nederst på siden. Du kan også ændre følgende: document.write("<img src=\"" + number + ".jpg\" height=\"500\">"); Til dette: document.write("<img src=\Pics\"" + number + ".jpg\" height=\"500\">");
Okay.. det ser meget lovende ud... men. Jeg har rettet lidt i det:
<script language="JavaScript" type="text/javascript"> <!-- var number = 0; number = displayItem("id"); document.write("<img src=\"" + number + ".jpg\">"); document.write("<br><br>");
if (number > 1) { document.write("<a href=\"page.htm?id="+(number-1)+"\">forrige</a>"); } document.write(" ");
if (number < 10) { document.write("<a href=\"page.htm?id="+(number-0+1)+"\">næste</a>"); } document.write("<br><br>"); document.write("Du ser på billede "+number+" ud af 10."); //--> </script>
Jeg har dropped Imput formen. Mit problem er nu, at jeg gerne vil ha' selve billederne fremvist i en tabel og Frem/Tilbage knapperne i en modstående tabel. Og faktisk skal script kunne fungerer på en ASP side, hvor Folder stien trækkes ind i scriptet fra DB:
document.write("<img src=\"" + number + ".jpg\">");
Blir til:
document.write("<img src=\"" + number + "<%=rs("ImagesLarge")%>.jpg\">");
-- Men da får jeg en ')' Expected fejl.. men hvor mangler den lige?
Og så den helt simple. Billedantal og filtype indstilles øverst.
<HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> var antal=8 var extention=".gif" var i=1; album = new Array() for(i = 1; i < antal+1; i++){ album[i] = new Image() album[i].src = i + extention } function forrige() { i=i-1 if (i==0) i=antal document.billede.src = album[i].src }
function naeste(){ i=i+1 if (i==antal+1) i=1; document.billede.src = album[i].src } </SCRIPT> </head>
Hmm.. kan ikke få noget til at virke. Problemet er at scriptet skal kombineres med ASP + at det skal deles op (eller være så simpelt som Helle Fred's) således at billeder (2 stk. ad gangen) vises fra én tabel og Frem/Tilbage knapperne fra en anden tabel.
Er det nogen jeg må sende min page.asp side til? Jeg er helt lost her...
De der dobbelte "" er heller ikke nødvendige ... det skal være enkelte over det hele ... gruden til at jeg har 2 er at jeg har taget mit fra en response.write hvor man skal have 2 "" over det hele ...
Hvis jeg var dig ville jeg også starte med en ting ... start med at få den til at køre med db ... når det køre så kan du arbejde med at få den ind i en tabel!
Yep enig.. Men jeg kan ikke få den til at kører med DB. Gør jeg som nedenstående, får jeg en ')' expected fejl fordi jeg har dobbelt "" og erstatter jeg <%=rs("ImagesLarge")%> med <%=rs('ImagesLarge')%> så godtages den ikke gyldig som ASP.. og melder dermed fejl.
document.write("<img src=\<%=rs("ImagesLarge")%>\ + number + ".jpg\">");
<script language="JavaScript" type="text/javascript"> <!-- var number = 0; number = displayItem("id"); document.write("<img src='<%=rs("ImagesLarge")%>" + number + ".jpg'>");
document.write("<br><br>");
if (number > 1) { document.write("<a href=\"page.asp?id="+(number-1)+"\">forrige</a>"); } document.write(" ");
if (number < 10) { document.write("<a href=\"page.asp?id="+(number-0+1)+"\">næste</a>"); } document.write("<br><br>"); document.write("Du ser på billede "+number+" ud af 10."); //--> </script>
Jeg tror måske at problemet er at du i din ImagesLarge lagre "\" ... dette benyttes som en del af document.write. Prøv evt at slette dine "\" i din ImagesLarge eller prøv med følgende:
document.write("<img src=\"<%=rs("ImagesLarge")%>" + number + ".jpg\">");
Jeg vil mene at du kan vise 2 billeder ved at gøre følgende: document.write("<img src=\"<%=rs("ImagesLarge")%>" + number + ".jpg\">"); document.write("<img src=\"<%=rs("ImagesLarge")%>" + number+1 + ".jpg\">");
Dine links skal nok ændres til følgende så: document.write("<a href=\"page.asp?id="+(number-2)+"\">forrige</a>"); document.write("<a href=\"page.asp?id="+(number-0+2)+"\">næste</a>");
Du skulle som sådan gerne selv kunne vælge hvor du vil have dine links så det skulle ikke være noget problem at smide det over i den anden tabel. Hvis du skal have hjælp til det skal vi se dine tabeller!
Det sidste problem er: Prøv at bladre lidt frem i billederne og klik så på link: "Read Specifications"
Da kan du se at den IKKE 'husker' hvilke billeder der var bladret frem til. Og jeg kan simpelthen ikke lurer hvilken variable jeg skal tilføje mit link for at få den til at fatte det. Kan du hjælpe?
Og så skal du måske overveje at hente showContentExtended fra en querystring også så når man ser specifikationerne så kan man blive ved med at se dem samtidig med at man bladre frem og tilbage i billederne. Det gøres med noget lig følgnende: &showContentExtended=" & request.querystring("showContentExtended") & "page=3&id=" & request.querystring("id")
Det virker fint nu! Så er der bare et KÆMPE problem. Hele problematikken med "BACK" knappen Bladres der frem/tilbage i billeder under "Read Specifications" og så klikkes "BACK" for at gå til derfra hvor "Read Specifications" blev klikket, da bladre "BACK" knappen først alle de billeder man tilbage, som man netop selv har bladret frem i - i stedet for blot at gå én side tilbage. You see!
Hvordan fikser man lige det, når "BACK" knapper er 'universal' for hele siden?
Du kan lave det på en åndsvag måde ved at tælle antal gange en bruger har kliket på et link på din side, atlså ved at gøre følgende hver gang du åbner siden:
If Session("Klik") = "" Then Sesison("Klik") = 0 End If Session("Klik") = Session("Klik") + 1
Så kan du jo i dit back link lave følgende: java script:history.go(-" & Session("Klik") & ");
Der er hvad jeg umidelbart kan se at løsning. Jeg kan ikke komme i tanke om andre måder!
Mht til linket skulle du gerne kunne lave det med følgende: Smid dette i starten af din side eller et sted før linket: <% If Session("Klik") = "" Then Sesison("Klik") = 0 End If Session("Klik") = Session("Klik") + 1 %>
Hver gang siden så bliver loadet skulle der gerne lægges en til din Session("Klik") og når folk så trykker på back går den det antal tilbage som man har bladret rund på siden, eks java script:history.go(-7)
Har du aktiveret vis vendlige HTTP fejl i din browser eller hva det nu hedder. Hvis så slå det fra og prøv igen. Du fidner det under Advanceret egenskaber for IE.
Eller så prøv lige at tilføj overstående til din side igen og smid et link så skal jeg lige se på det.
Jeg lavede faktisk at nyt spørgsml til dette, lige før jeg spurgte dig... En er kommet op med dette: (http://exp.dk/spm/393184)
<% 'Dette øverst If Session("Klik") = "" Then Session("Klik") = 0 End If If Session("side") <> Request.ServerVariables("SCRIPT_NAME") AND Session("side") <> "" Then Session("Klik") = Session("Klik") + 1 End If Session("side") = Request.ServerVariables("SCRIPT_NAME") 'Dette udskriver link If Session("Klik") > 0 Then Response.Write("<a href=""java script:history.go(-"&Session("Klik")&")"">tilbage</a>") Else Response.Write("<a href=""java script:history.go("&Session("Klik")&")"">tilbage</a>") End If %>
Nu har jeg lige testet det på min computer. Lave en fil du kalder 2.asp med følgende indhold: <% If Session("Klik") = "" Then Session("Klik") = 0 End If Session("Klik") = Session("Klik") + 1 %>
Vil det så være muligt at det KUN er, når Forward/Back knapperne klikkes at der blir registreret et "Klik"? På den måde vil "Back" knappen i nederste venstre hjørne, stadig fatte at den skal gå det X antal "skridt" tilbage der er blevet klikket frem/tilbage mellem billederne.
Såvidt jeg kan se så er det kun din frem og tilbage knapper der benytter id=X, hvor x er et tal i deres link når de åbner siden. Du skulle altså gerne kunne gøre følgende: <% If Session("Klik") = "" Then Session("Klik") = 1 End If If request.querystring("id") <> "" Then Session("Klik") = Session("Klik") + 1 End If %>
Og dette til at bladre "Tilbage" med: document.write("<a href=\"page.asp?language=<%=language%>&category=<%=category%>&showContentExtended=<%=showContentExtended%>&page=<%=page%>&id="+(number-2)+"\" class='menu'><%=Back%></a>");
"BACK" knappen hvortil antal "Klik" skal overføres, ser sådan her ud: <a onfocus="this.blur( )" class="menu" href="java script:history.go(-<%=klik%>);">
På siden hvor du har dine forward og tilbage links smider du følgende: <% If Session("Klik") = "" Then Session("Klik") = 1 End If If request.querystring("Klik") = "True" Then Session("Klik") = Session("Klik") + 1 End If %>
Hmm... ups! Det var den her: <a onfocus="this.blur( "
Den manglede en ) <a onfocus="this.blur( )"
To ting.. De virker fint nok nu med at tælle op, også med Back knappen. Det vil sige, den tælle det antal Klik der klikkes på "Forward" og det passer så med det antal der skal til, for at gå tilbage til den side man kom fra. Problemet er blot at Klikkes der på bladreknappen "back", da tæller denne også for én side og ikke minus én side.
Hmm... ja det kan jeg godt se. Men det virker ikke helt efter hensigten. Den skulle jo nok nærmere trække -1 fra det antal den har talt op, når bladre Tilbage knappen klikkes.
Et andet problem er, at den "husker" det antal den har talt op, også selv om siden forlades (hvis der returneres til forsiden f.eks.) Det vil sige at, vælges siden med bladre funktionen igen under samme besøg på Walsted (samme Session), da husker den altså det antal den sidst talte op, og lægger derfor de nye optællinger oven i dette tal. Det giver nogle besynderlige situation, når "BACK" knappen så klikkes -- den kan gå helt tilbage til de hjemmesider man måtte ha' besøgt inden Walsted.dk
<% If Request.QueryString("Klik") = "" Then Klik = 1 End If If request.querystring("Type") = "True" Then Klik = Request.QueryString("Klik") + 1 End If If request.querystring("Type") = "False" Then Klik = Request.QueryString("Klik") - 1 End If %>
Og din back knap skal så se således ud: <a onfocus="this.blur( " class="menu" href="java script:history.go(-<%=Klik%>);">
Nu gemmer vi antallet af sider som tilbage knappen skal gå tilbage i en varriabel i stedet for en session. Dette gør at når man åbner siden igen så er den lig 0. Desuden er tilføjet så når du benytter frem knappen så tilføjes 1 til variablen og når du benytter tilbage knappen så fratrækkes 1.
Grunden til at den ikke skal trække en fra i antal kliks når du benytter back knappen til billederne er jo at back knappen til billederne ikke er defineret som: java script:history.go(-1) Men som et almindelig link!
Prøv at indsætte overstående på siden og bladre frem og tilbage i billederne og tryk så på tilbage knappen så skulle det gerne køre som jeg vil mene det skal virke!
Men disse skal: Klik=" & Klik & "&language... Skal da se sådan her ud: Klik=<%=Klik%>... ellers får jeg fejl..
Prøv at teste denne, baseret på dit forrige indlæg med True/False funktionen. Det virker faktisk men.. Prøv fra start først at bladre helt frem og så lidt tilbage... og klik så BACK knappen. Hvad det den lige laver der?
Kan noget gøres ved dette? Eller skal jeg blot bruge dit seneste indlæg... og er det så uden brug af True/False?
Ja selvfølgelig skal det stå som <%=Klik%> da det er en asp funktion!
Jeg kan ikke lige komme ind på siden. Den bliver ved med at loade og kommer aldrig med et resultat.
Prøv lige at gøre som jeg skrev i mit sidste forslag hvor du lige retter Klik til <%=Klik%>. Det er uden brug af True/fale og skulle meget gerne virke!
Nu syntes jeg tilgengæld at det er fucked helt op for mig her... Tror ikke har fået slettet seneste rettelser og uploaded en forkert fil. Sorry... ved ikke helt hvad du tester på nu...
Men dit svar: 28/08-2003 17:33:42 Virker som sagt: med at tælle op, med dine sidste ændringer, men ikke med at sige -1 når den skal tælle ned.
Såvidt jeg kan se er der ikke noget galt med knapperne til at bladre frem og tilbage i dine billeder. Derfor kan der heller ikke være noget galt med koden der håndter dette så det må altså være dit link. Check den lige eller smid koden til dit link og lad mig se på den!
Prøv at få den til at skrive det rigtige tal i fin generelle back. Når den virker så tager vi den derfra!
Jeg tror nemlig at når du får det fikset så kan du se at det er den rigtige måde at gøre det på. Den skal nemlig ikke tælle ned når du trykker på tilbage knappen ved dine billeder! For som jeg tidliger nævnte så er tilbage knappen ved dine billeder ikke defineret som et link med java script:history.go(-1), men som et link nøjagtig som linket fremad.
Vælg News og klik linket "Read more details" under båden. På siden med bladrescript, klik da helt frem til de sidte 2 både Før din mus ned over "BACK" knappen i nederste venstre hjørne af siden, og BEMÆRK her at History.Go stå til (-5). Hurra! Det svarer til det antal "kliks" du netop har foretaget. Klikkes denne "BACK" knap nu.. kommer du vupti tilbage til News forsiden.
Så langt sp godt. Men.. men.. når du har bladret frem til de sidste to billeder, og bladre et skridt tilbage, BEMÆRK da igen på linket "BACK" i nederste venstre hjørne, at dette nu står til (-6) og IKKE (-4) altså trækker den IKKE -1 en fra, når der bladres baglæns.
Er vi ikke enig om at lige meget hvornår du trykker på den generelle back kanp så skal du komme tilbage til news siden. Hvis så er det jo det du har!
Prøv at bladre lidt frem og tilbage og lad din back tælle op til en 10 stykker eller sådan noget. Tryk så på din generelle back knap og vipti du ender på news forsiden! Dette er da hvad du vil have ikke? Ellers må du lige forklare det ... for jeg kan altså ikke se hvorfor du vil have at når du trykker back ved billeder at det så trækkes -1 fra. Hvis du gør at den trækker -1 fra så når du trykker på det generelle back knap så får du vist de billeder der ligger det antal backs tilbage!
Du kan jo prøve når du bladre lidt frem og tilbage at trykke på den pil der er ved siden af din browsers back knap i venstre top hjørne så kan du se hver gang der bliver lavet en side man kan gå tilbage til!
Tror du har ret... må løbe.. tester lidt mere senere. Men nu fatter jeg overhovedet ikke hvordan det er kommet til at virke... huh! :) -- men genial det er du nok ;)
Jeg har forsøgt at gøre brug af bladre frem/tilbage scriptet på et andet site, men har et lille problem (igen) med den href="java script:history.go(-<%=Klik%>);" funktion, du har hjulpet mig med.
Vil du ha' tid og lyst til at hjælpe? Jeg har et link til siden, som jeg IKKE kan vise her. Kunne jeg evt maile det til dig?
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.