javascript array + laden pictures

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik wil het volgende probleem oplossen, waarbij een goed startpunt welkom is, want ik zit nu al te lang te zoeken en te lezen. ik wil dynamisch plaatjes laden op een HTML pagina met javascript. De plaatjes zitten in een map "pictures". In een array staan de lokale url's naar de plaatjes. Ik denk dat ik dit moet doen door met een loop door de array te gaan, de link zelf eruit moet halen, en dit aan de image id - src toe toevoegen. , dit lukt dus niet.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script language="JavaScript" type="text/javascript">
var album = 
      [
        {
          url: 'images/0006787.jpg',
          landscape: false,
        },
        {
          url: 'images/0004713.jpg',
          landscape: false
        },
        {
          url: 'images/0004720.jpg',
          landscape: false
        }
]
</script>


(mm krijg die tags niet voor elkaar) Dus de vraag is hoe ik deze kan laden op een html pagina. Voor sommigen waarschijnlijk heel simpel, voor anderen zoals ik zelf , nog nooit iets gedaan met js, loop ik hier op vast.

Wat aanknopingspunten zou handig zijn, complete oplossingen verwacht ik ook niet.

[ Voor 19% gewijzigd door moto-moi op 19-02-2011 15:21 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:41

Creepy

Tactical Espionage Splatterer

Aangezien je vast loopt: wat heb je dan zelf al geprobeerd en wat lukt daar niet mee?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • jw_moonshine
  • Registratie: Oktober 2009
  • Laatst online: 05-07-2023
misschien kun je eens kijken naar jquery, die heeft mooie oplossingen voor dit soort dingen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is opdracht die in javascript gedaan moet worden. Tevens moeten de plaatjes dynamisch geladen worden. Dat stukje lukt al wel, alleen dan staan de plaatjes via ID's aangegeven. (dus niet de locaties zoals in de array.)
Ik hoef dan ook geen oplossingen, maar ben alleen zoekende naar een goed startpunt....... (heb ondertussen vierkante ogen, na een paar uur klooien. Ach ja morgenavond weer verder.
hoe geef ik de juiste tags in om code weer te geven?

Acties:
  • 0 Henk 'm!

  • FlorisD
  • Registratie: Februari 2005
  • Laatst online: 22:35
Wat je zou kunnen doen om een foto weer te geven is het volgende, met behulp van jQuery:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<!DOCTYPE html>
<html>
<head>
    <title>JS album</title>
    <meta charset="utf-8" />
    
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
    <script language="JavaScript" type="text/javascript">
    var album = 
          [
            {
              url: 'http://code.google.com/images/code_logo.gif',
              landscape: false,
            },
            {
              url: 'http://code.google.com/images/icon_sprite-35.png',
              landscape: false
            },
            {
              url: 'http://tweakimg.net/g/if/v2/header/menu_buttons.png',
              landscape: false
            }
    ];
    
    var albumobj = {
        curr_index: 0,
        $image: null,
        init: function() {
            // Cachen van element
            albumobj.$image = $("#image");
            
            // Eerste afbeelding inladen in IMG-element
            albumobj.$image.attr('src', album[0].url);
            
            // Events voor vorige/volgende
            $("#image_prev").unbind('click').click(function() {
                albumobj.prev();
                
                return false;
            });
            $("#image_next").unbind('click').click(function() {
                albumobj.next();
                
                return false;
            });
        },
        // Volgende afbeelding laden onclick
        next: function() {
            if(albumobj.curr_index == album.length - 1) {
                // Als de laatste foto zichtbaar is, terug naar het begin
                albumobj.curr_index = 0;
                albumobj.$image.attr('src', album[albumobj.curr_index].url);
            } else {
                // Gewoon volgende foto
                albumobj.curr_index++;
                albumobj.$image.attr('src', album[albumobj.curr_index].url);
            }
        },
        // Vorige afbeelding laden onclick
        prev: function() {
            if(albumobj.curr_index == 0) {
                // Als de eerste foto zichtbaar is, spring dan naar het eind
                albumobj.curr_index = album.length - 1;
                albumobj.$image.attr('src', album[albumobj.curr_index].url);
            } else {
                // Gewoon vorige foto
                albumobj.curr_index--;
                albumobj.$image.attr('src', album[albumobj.curr_index].url);
            }
        }
    };
    
    $(document).ready(function() {
        albumobj.init();
    });
    </script>
</head>

<body>
    <img src="" id="image" />
    <a href="#" id="image_prev">Vorige</a>
    <a href="#" id="image_next">Volgende</a>
</body>
</html>


Even snel in elkaar geflanst, dus kunnen hier en daar wat foutjes in zitten (niet getest ook). Maar dit is dus ongeveer wat je zoekt denk ik.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
FlorisD schreef op zondag 20 februari 2011 @ 19:39:
Wat je zou kunnen doen om een foto weer te geven is het volgende, met behulp van jQuery:

...

Even snel in elkaar geflanst, dus kunnen hier en daar wat foutjes in zitten (niet getest ook). Maar dit is dus ongeveer wat je zoekt denk ik.
Met een oplossing voorgekauwd en wel aanleveren schiet de TS niets op en zal er niets van leren ;)
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime.
Verwijderd schreef op zaterdag 19 februari 2011 @ 22:37:
hoe geef ik de juiste tags in om code weer te geven?
code tags

[ Voor 34% gewijzigd door RobIII op 20-02-2011 19:41 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
Verwijderd schreef op zaterdag 19 februari 2011 @ 14:56:
ik wil dynamisch plaatjes laden op een HTML pagina met javascript.
Wat wil je precies? Nieuw plaatje laden als er geklikt wordt? In dat geval wil je een functie aan het onclick JavaScript event hangen. In ieder geval, je zult een functie aan een event moeten koppelen en in die functie de plaatjes laden en in het DOM plaatsen.

Zoiets wil je waarschijnlijk. Dat had je trouwens met de volgende zoekwoorden ook zelf kunnen vinden: loading images javascript

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Verwijderd schreef op zaterdag 19 februari 2011 @ 22:37:
Het is opdracht die in javascript gedaan moet worden. Tevens moeten de plaatjes dynamisch geladen worden.
[...]
Het lijkt er op dat dit een school opdracht is?

Voor dit soort dingen lijkt me ajax eigenlijk veel beter op z'n plaats. Dan werkt het ook zonder javascript, en kun je via een server-side scripttaal alle images dynamisch van de server halen. Hoef je de images niet in je bron te zetten.

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 21:34

MueR

Admin Tweakers Discord

is niet lief

Huh? Ajax en werken zonder javascript?Jij moet even de definitie van ajax nalezen.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Hmm ik verwoord het inderdaad verkeerd.

Wat ik bedoel; wanneer je AJAX gebruikt, kun je altijd terug vallen op alleen de server-side taal. Heeft de bezoeker javascript? Prima, kun je alles zonder page-refresh inladen. Heeft de bezoeker het niet? Gewoon d.m.v. een page-refresh / POST / GET request de nieuwe data ophalen.
Phas0r schreef op maandag 21 februari 2011 @ 09:44:
AJAX is niks anders dan met javascript asynchrone requests uit voeren, zonder javascript geen AJAX ;)
Klopt, maar door gebruik van een server-side scripttaal kun je wel voor (dynamische) backup zorgen wanneer javascript niet beschikbaar is. Het mooie aan AJAX is dat -- wanneer je het goed doet, bijna altijd -- de content ook zonder javascript beschikbaar is.

Nu is het in dit geval schijnbaar alleen een school opdracht, dus maakt het verder weinig uit...

[ Voor 86% gewijzigd door OkkE op 21-02-2011 10:05 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 15-09 10:47

Ventieldopje

I'm not your pal, mate!

Je kunt dan niet meer in de achtergrond plaatjes op gaan lepelen, je zult dan dus een statisch plaatje moeten laten zien oid. AJAX is niks anders dan met javascript asynchrone requests uit voeren, zonder javascript geen AJAX ;)

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • xyanide
  • Registratie: September 2006
  • Laatst online: 00:00
Deze opdracht hebben wij op dit moment ook.
Ik zal je een kort voorbeeldje geven om je op weg te helpen:

JavaScript:
1
2
3
4
5
6
7
8
for (image in album) {
var thumbnailImage = document.createElement("img");
thumbnailImage.setAttribute('src', album[image].url);

var thumbDiv = document.createElement("div");
thumbDiv.setAttribute("class", "imageThumb");
thumbDiv.appendChild(thumbnailImage);
mainImageContainer.appendChild(thumbDiv);


Waarbij de mainImageContainer de div is waar alle foto`s in worden geplaatst.

[ Voor 9% gewijzigd door xyanide op 21-02-2011 09:48 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor alle reacties, het laatste voorbeeld helpt mij zeker goed op weg. Gisteravond, had ik (de basis) voor elkaar, en wat ik nou fout deed weet ik niet, maar die code had ik niet gesaved oid, maar foetsie!! en toen lukte het natuurlijk niet............ uur lopen zoeken....... was vannacht te laat, en te vroeg ging de wekker weer............
Pagina: 1