Avatar billede walfi Nybegynder
15. juli 2008 - 21:38 Der er 17 kommentarer og
2 løsninger

Tryk på billede link vha javascript

Hej..

Jeg er ingen haj til Javascript, men ønsker et script hvor man trykke på to billeder, de skal begge linke til en iframe.
Hvis man på det ene billede tæller den -1 og hvis man trykker på det andet billede tæller den +1 i dette link.
Hvis jeg trykker to gange på samme billede vil den altså linke til ?id=3, og hvis jeg derefter igen trykker på det første billede vil den linke til ?id=2.

Disse links skal kunne aktiveres vha <a href="java script:Scr()"> eller noget lignende..

På forhånd tak
Avatar billede fbisen Nybegynder
15. juli 2008 - 21:58 #1
Nu har jeg lavet det med et billede, og ikke lige som et <a href""></a>
Men det kan jeg måske også rigge til.

Jeg er ikke den sejeste haj til JavaScript, men fik da lavet dette:

<img src="up.jpg" onClick="document.getElementById('iframe').src = document.getElementById('iframe').src.substring(0, document.getElementById('iframe').src.indexOf('id=')+3) + (parseInt(document.getElementById('iframe').src.substring(document.getElementById('iframe').src.indexOf('id=')+3, 1000))+1);">
<img src="ned.jpg" onClick="document.getElementById('iframe').src = document.getElementById('iframe').src.substring(0, document.getElementById('iframe').src.indexOf('id=')+3) + (parseInt(document.getElementById('iframe').src.substring(document.getElementById('iframe').src.indexOf('id=')+3, 1000))-1);">
<iframe id="iframe" src="index.php?id=1"></iframe>

Det vil ikke virke hvis id= ikke er på linket fra starten af.
Avatar billede walfi Nybegynder
15. juli 2008 - 23:01 #2
Super det virker helt perfekt, næsten..
Det eneste er:der er også nogle andre ting end id=, der er også veb= og mappe=, de kommer automatisk ikke med i det nye link?
Avatar billede fbisen Nybegynder
15. juli 2008 - 23:33 #3
Jeg er så smart - Jeg smed alt efter id= væk :)

Håber dette hjælper lidt på det. Jeg er som sagt ikke vildt sej til dette, så jeg får da også lært endel ved at lege med det:

<img src="up.jpg" alt="Up" onClick="document.getElementById('iframe').src = document.getElementById('iframe').src.substring(0, document.getElementById('iframe').src.indexOf('id=')+3) + (parseInt(document.getElementById('iframe').src.substring(document.getElementById('iframe').src.indexOf('id=')+3, document.getElementById('iframe').src.indexOf('&', document.getElementById('iframe').src.indexOf('id='))))+1) + document.getElementById('iframe').src.substring(document.getElementById('iframe').src.indexOf('&', document.getElementById('iframe').src.indexOf('id=')), document.getElementById('iframe').src.length);">
<img src="ned.jpg" alt="Ned" onClick="document.getElementById('iframe').src = document.getElementById('iframe').src.substring(0, document.getElementById('iframe').src.indexOf('id=')+3) + (parseInt(document.getElementById('iframe').src.substring(document.getElementById('iframe').src.indexOf('id=')+3, document.getElementById('iframe').src.indexOf('&', document.getElementById('iframe').src.indexOf('id='))))-1) + document.getElementById('iframe').src.substring(document.getElementById('iframe').src.indexOf('&', document.getElementById('iframe').src.indexOf('id=')), document.getElementById('iframe').src.length);">
<iframe id="iframe" src="index.php?id=1&amp;hej=3"></iframe>
Avatar billede fbisen Nybegynder
15. juli 2008 - 23:53 #5
Hehe - ØV. Kan du give mig det som iframen skal indeholde, så kan jeg selv teste med det?
Avatar billede walfi Nybegynder
16. juli 2008 - 00:00 #6
Eller det er mig der havde lavet en fejl kan jeg se. Iframen skal indeholde billeder, det skal fungerer som en scrollbar.
Altså det er rigtig nok undtagen, at når jeg har opdateret iframen til en anden end den havde startet med at være, mappe=4 istedet for 3, så bruger den stadig mappe=3 når man trykker på et billede..
Avatar billede fbisen Nybegynder
16. juli 2008 - 00:07 #7
Jeg er ikke helt med her?
Avatar billede fbisen Nybegynder
16. juli 2008 - 00:10 #8
Jeg har nu lavet en funktion til det. Den gør præcis det samme, men er måske lidt mere overskuelig.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function iframeUpNed(id,upned)
{

sourceOld = document.getElementById(id).src;
sourceNew = sourceOld.substring(0, sourceOld.indexOf('id=')+3);
sourceNew += (parseInt(sourceOld.substring(sourceOld.indexOf('id=')+3, sourceOld.indexOf('&', sourceOld.indexOf('id='))))+upned)
sourceNew += sourceOld.substring(sourceOld.indexOf('&', sourceOld.indexOf('id=')), sourceOld.length);

document.getElementById(id).src = sourceNew;
}
</script>
</head>
<body>


<img src="up.jpg" alt="Up" onClick="iframeUpNed('iframe', 1);">
<img src="ned.jpg" alt="Ned" onClick="iframeUpNed('iframe', -1);">
<iframe id="iframe" src="index.php?id=1&amp;hej=3"></iframe>



</body>
</html>
Avatar billede roenving Novice
16. juli 2008 - 00:27 #9
-- og det ligner en opgave for en regexp:

<script type="text/javascript">
function iframeUpNed(id,upned){
var sourceOld = document.getElementById(id).src;
var num = +sourceOld.replace(/^.*[?&]id=(\d+).*$/,"$1") + upned;
var sourceNew = sourceOld.replace(/id=\d+/,"id=" + num);

document.getElementById(id).src = sourceNew;
}
</script>
Avatar billede fbisen Nybegynder
16. juli 2008 - 09:43 #10
roenving> Det ser jo godt ud :) Det er i hvert fald nget mere kompakt. Det havde jeg ikke lige tænkt på.
Avatar billede walfi Nybegynder
16. juli 2008 - 10:16 #11
Ja virker lidt mere overskueligt, men det samme problem er der.
Den bruger adressen til den iframe som bliver vist når man åbner siden og ikke den der er der lige nu..
Den starter med at have f.eks. ?mappe=3&veb=b, derefter bliver det måske lavet om så mappe=4&veb=v . Men hvis jeg så trykke på en af pilene, bruger den stadig ?mappe=3&veb=b.
Avatar billede fbisen Nybegynder
16. juli 2008 - 10:26 #12
Prøv dette:

<script type="text/javascript">
function iframeUpNed(id,upned){
var sourceOld = frames[id].location.href;;
var num = +sourceOld.replace(/^.*[?&]id=(\d+).*$/,"$1") + upned;
var sourceNew = sourceOld.replace(/id=\d+/,"id=" + num);

frames[id].location.href = sourceNew;
}
</script>
Avatar billede fbisen Nybegynder
16. juli 2008 - 10:29 #13
Hovsa - Bemærk jeg har ændret iframen - Den har nu et navn istedet for et id.
<iframe name="iframe" src="index.php?id=1&amp;hej=3"></iframe>
Avatar billede walfi Nybegynder
16. juli 2008 - 11:08 #14
Smid et svar, det virker :D
Mange tak for hjælpen..
Avatar billede fbisen Nybegynder
16. juli 2008 - 11:12 #15
Det var så lidt, men vent lige på at roenving tager sig sammen til at smide et svar også :)
Jeg fik da også lært noget her :) Så takker for opgaven.
Avatar billede roenving Novice
16. juli 2008 - 14:00 #16
Ja, det lyder rigtigt, at man ved at benytte html3.2/html4.01 trans DOM får en aktuel url og med en nyere DOM får den oprindelige (der så tages fra src-tingen i tagget !-)

-- velbekomme, men giv de fleste til fbisen, der jo er den, der har arbejdet i spørgsmålet '-)
Avatar billede walfi Nybegynder
17. juli 2008 - 00:31 #17
Det er mig der takker :D
Avatar billede roenving Novice
17. juli 2008 - 16:51 #18
-- jeg takker for point ;~}
Avatar billede fbisen Nybegynder
17. juli 2008 - 17:04 #19
Os mig :)
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