Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    aggiungere didascalie a slideshow

    ciao a tutti, domandina su un javascript (sono nuova qui e mi sembra di non trovare nulla di specifico nell'archivio, ma se mi sbaglio correggetemi!)

    ho inserito uno slideshow javascript molto semplice in una pagina web che ho fatto, direttamente nell'<head>
    vorrei aggiungere delle brevi didascalie ad ogni immagine, probabilmente con un altro array, mi dico? possibilmente senza sconvolgere tutto lo script e senza appoggiarmi a jquery o plugin vari...

    ecco il codice e grazie mille in anticipo - non sono un'esperta di javascript ma un consiglio veloce su come svilupparlo dovrebbe bastare!

    <script language="JavaScript">

    <!--

    var interval = 5000;
    var random_display = 0;
    var imageDir = "portraits/";
    var imageNum = 0;

    imageArray = new Array();
    imageArray[imageNum++] = new imageItem(imageDir + "01_stappert_rp.jpg");
    imageArray[imageNum++] = new imageItem(imageDir + "02_stappert_rp2.jpg");
    imageArray[imageNum++] = new imageItem(imageDir + "03_stappert_mk1.jpg");
    imageArray[imageNum++] = new imageItem(imageDir + "04_stappert_cwe.jpg");

    var totalImages = imageArray.length;

    function imageItem(image_location) {
    this.image_item = new Image();
    this.image_item.src = image_location;
    }

    function get_ImageItemLocation(imageObj) {
    return(imageObj.image_item.src)
    }

    function getNextImage() {
    if (random_display) {
    imageNum = randNum(0, totalImages-1);
    }

    else {
    imageNum = (imageNum+1) % totalImages;
    }
    var new_image = get_ImageItemLocation(imageArray[imageNum]);
    return(new_image);
    }

    function getPrevImage() {
    if(imageNum-1 < 0) {
    imageNum = totalImages-1;
    }
    else
    imageNum = (imageNum-1) % totalImages;
    var new_image = get_ImageItemLocation(imageArray[imageNum]);
    return(new_image);
    }

    function prevImage(place) {
    var new_image = getPrevImage();
    document[place].src = new_image;
    }

    function switchImage(place) {
    var new_image = getNextImage();
    document[place].src = new_image;
    var recur_call = "switchImage('"+place+"')";
    timerID = setTimeout(recur_call, interval);
    }

    // -->

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    come hai detto tu stessa utilizzi un altro array(didascalieArray) facendo in modo che la didascalia dell'immagine che si trova nell'array imageArray alla posizione i-esima si trovi nell'array didascalieArray alla posizione i-esima. Quando cambi immagine visualizzi la rispettiva didascalia in un div con id='didascalia'

    Codice PHP:

    <script language="JavaScript">

    <!--

    var 
    interval 5000;
    var 
    random_display 0;
    var 
    imageDir "portraits/";
    var 
    imageNum 0;

    imageArray = new Array();
    didascalieArray = new Array();
    imageArray[imageNum++] = new imageItem(imageDir "01_stappert_rp.jpg");
    didascalieArray[imageNum] = "didascalia immagine 1";
    imageArray[imageNum++] = new imageItem(imageDir "02_stappert_rp2.jpg");
    didascalieArray[imageNum] = "didascalia immagine 2";
    imageArray[imageNum++] = new imageItem(imageDir "03_stappert_mk1.jpg");
    didascalieArray[imageNum] = "didascalia immagine 3";
    imageArray[imageNum++] = new imageItem(imageDir "04_stappert_cwe.jpg");
    didascalieArray[imageNum] = "didascalia immagine 4";

    var 
    totalImages imageArray.length;

    function 
    imageItem(image_location) {
    this.image_item = new Image();
    this.image_item.src image_location;
    }

    function 
    get_ImageItemLocation(imageObj) {
    return(
    imageObj.image_item.src)
    }

    function 
    getNextImage() {
    if (
    random_display) {
    imageNum randNum(0totalImages-1);
    }

    else {
    imageNum = (imageNum+1) % totalImages;
    }
    var 
    new_image get_ImageItemLocation(imageArray[imageNum]);

    document.getElementById("didascalia").innerHTML didascalieArray[imageNum];
    return(
    new_image);
    }

    function 
    getPrevImage() {
    if(
    imageNum-0) {
    imageNum totalImages-1;
    }
    else
    imageNum = (imageNum-1) % totalImages;
    var 
    new_image get_ImageItemLocation(imageArray[imageNum]);
    document.getElementById("didascalia").innerHTML didascalieArray[imageNum];
    return(
    new_image);
    }

    function 
    prevImage(place) {
    var 
    new_image getPrevImage();
    document[place].src new_image;
    }

    function 
    switchImage(place) {
    var 
    new_image getNextImage();
    document[place].src new_image;
    var 
    recur_call "switchImage('"+place+"')";
    timerID setTimeout(recur_callinterval);
    }

    // --> 

  3. #3
    funziona alla perfezione, grazie mille, era proprio quello che stavo cercando!

    rimane solo un piccolo dubbio: ora la prima immagine che appare è la seconda, con la prima didascalia sotto...mentre la prima compare quando il giro ricomincia con didascalia "undefined"...quale potrebbe essere la causa?

    Il codice è di fatto identico a quello che mi hai proposto tu, ma nel dubbio lo ricopio qui sotto:

    <script language="JavaScript">

    <!--


    var interval = 5000;
    var random_display = 0;
    var imageDir = "portraits/";
    var imageNum = 0;

    imageArray = new Array();
    didascalieArray = new Array();
    imageArray[imageNum++] = new imageItem(imageDir + "01_stappert_rp.jpg");
    didascalieArray[imageNum] = "Raymond Pettibon - Berlin 1998";
    imageArray[imageNum++] = new imageItem(imageDir + "02_stappert_rp2.jpg");
    didascalieArray[imageNum] = "Raymond Pettibon - Berlin 1998";
    imageArray[imageNum++] = new imageItem(imageDir + "03_stappert_mk1.jpg");
    didascalieArray[imageNum] = "Martin Kippenberger - Studio, Cologne 1986";
    imageArray[imageNum++] = new imageItem(imageDir + "04_stappert_cwe.jpg");
    didascalieArray[imageNum] = "Cerith Wyn Evans - Frankfurt am Main 2004";

    var totalImages = imageArray.length;

    function imageItem(image_location) {
    this.image_item = new Image();
    this.image_item.src = image_location;
    }

    function get_ImageItemLocation(imageObj) {
    return(imageObj.image_item.src)
    }

    function getNextImage() {
    if (random_display) {
    imageNum = randNum(0, totalImages-1);
    }

    else {
    imageNum = (imageNum+1) % totalImages;
    }
    var new_image = get_ImageItemLocation(imageArray[imageNum]);

    document.getElementById("didascalia").innerHTML = didascalieArray[imageNum];
    return(new_image);
    }

    function getPrevImage() {
    if(imageNum-1 < 0) {
    imageNum = totalImages-1;
    }
    else
    imageNum = (imageNum-1) % totalImages;
    var new_image = get_ImageItemLocation(imageArray[imageNum]);
    document.getElementById("didascalia").innerHTML = didascalieArray[imageNum];
    return(new_image);
    }

    function prevImage(place) {
    var new_image = getPrevImage();
    document[place].src = new_image;
    }

    function switchImage(place) {
    var new_image = getNextImage();
    document[place].src = new_image;
    var recur_call = "switchImage('"+place+"')";
    timerID = setTimeout(recur_call, interval);
    }

    // -->

    </script>

  4. #4

    risolto il problema (in parte) - ultima domandina!

    ho risolto per quanto riguarda l'accoppiamento giusto fra immagine e didascalie invertendo l'ordine dida-immagine in questa parte di codice:

    didascalieArray = new Array();
    imageArray = new Array();
    didascalieArray[imageNum] = "Raymond Pettibon - Berlin 1998";
    imageArray[imageNum++] = new imageItem(imageDir + "01_stappert_rp.jpg");
    didascalieArray[imageNum] = "Raymond Pettibon - Berlin 1998";
    imageArray[imageNum++] = new imageItem(imageDir + "02_stappert_rp2.jpg");
    didascalieArray[imageNum] = "Martin Kippenberger - Studio, Cologne 1986";
    imageArray[imageNum++] = new imageItem(imageDir + "03_stappert_mk1.jpg");
    didascalieArray[imageNum] = "Cerith Wyn Evans - Frankfurt am Main 2004";
    imageArray[imageNum++] = new imageItem(imageDir + "04_stappert_cwe.jpg");

    COntinua però a comparire per prima la seconda immagine invece della prima, immagino sia una piccolezza che per ora non riesco a scovare...se avete idee grazie mille!

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    fai l'incremento di imgnum dopo che lo utilizzi per l'immagine e le didascalie

    didascalieArray[imageNum] = "Raymond Pettibon - Berlin 1998";
    imageArray[imageNum] = new imageItem(imageDir + "01_stappert_rp.jpg");
    imageNum++;

  6. #6
    grazie ancora! ora il codice è a posto ma avrei un'altra curiosità: al momento non sto lavorando con una connessione-scheggia e lo slideshow ci mette un po' troppo a partire...quale sarebbe la soluzione migliore per il preload delle prime 3-4 immagini all'interno dello script?

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    puoi provare a vedere se esiste qualche plugin jquery che fa quello che desideri, sicuramente troverai qualcosa in flash, non so dirti altro a riguardo

  8. #8
    ok, grazie ancora.
    proverò a postare qualcosa solo sulla questione preload nel caso qualcuno abbia una buona idea...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.