Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    [JS] È possibile semplificare questo script con un ciclo?

    Codice PHP:
    function addbookmark(){
    if (
    document.all)
    window.external.AddFavorite(bookmarkurl,bookmarktitle)
    }

    {
    altx = new Image();
    altx.src "dati/0.gif";

    alt0 = new Image();
    alt0.src "dati/b2.gif";

    alt1 = new Image();
    alt1.src "dati/b2c1.gif";

    alt2 = new Image();
    alt2.src "dati/b2c2.gif";

    alt3 = new Image();
    alt3.src "dati/b2c3.gif";

    alt4 = new Image();
    alt4.src "dati/b2c4.gif";

    alt5 = new Image();
    alt5.src "dati/b2c5.gif";

    alt6 = new Image();
    alt6.src "dati/b2c6.gif";

    alt8 = new Image();
    alt8.src "dati/b2c8.gif";

    alt9 = new Image();
    alt9.src "dati/b2c9.gif";

    graphic1= new Image();
    graphic1.src "dati/c1.gif";
    graphic1on = new Image();
    graphic1on.src "dati/c1b.gif";

    graphic2= new Image();
    graphic2.src "dati/c2.gif";
    graphic2on = new Image();
    graphic2on.src "dati/c2b.gif";

    graphic3= new Image();
    graphic3.src "dati/c3.gif";
    graphic3on = new Image();
    graphic3on.src "dati/c3b.gif";

    graphic4= new Image();
    graphic4.src "dati/c4.gif";
    graphic4on = new Image();
    graphic4on.src "dati/c4b.gif";

    graphic5= new Image();
    graphic5.src "dati/c5.gif";
    graphic5on = new Image();
    graphic5on.src "dati/c5b.gif";

    graphic6= new Image();
    graphic6.src "dati/c6.gif";
    graphic6on = new Image();
    graphic6on.src "dati/c6b.gif";

    graphic8= new Image();
    graphic8.src "dati/c8.gif";
    graphic8on = new Image();
    graphic8on.src "dati/c8b.gif";

    graphic9= new Image();
    graphic9.src "dati/c9.gif";
    graphic9on = new Image();
    graphic9on.src "dati/c9b.gif";

    graphica2= new Image();
    graphica2.src "dati/a2.gif";
    graphica2on = new Image();
    graphica2on.src "dati/a2b.gif";

    graphica3= new Image();
    graphica3.src "dati/a3.gif";
    graphica3on = new Image();
    graphica3on.src "dati/a3b.gif";

    graphica4= new Image();
    graphica4.src "dati/a4.gif";
    graphica4on = new Image();
    graphica4on.src "dati/a4b.gif";

    graphica5= new Image();
    graphica5.src "dati/a5.gif";
    graphica5on = new Image();
    graphica5on.src "dati/a5b.gif";

    graphica6= new Image();
    graphica6.src "dati/a6.gif";
    graphica6on = new Image();
    graphica6on.src "dati/a6b.gif";

    }
    function 
    imageChange(imageID,imageName,imageID2,imageName2) {


    {
    document.images[imageID].src = eval(imageName ".src");
    document.images[imageID2].src = eval(imageName2 ".src");
    }


    È possibile semplificare questo script con un ciclo?
    Potete anche camabiare il nome delle immagini e/o l'uso dei comandi se vi fa più comodo.
    Questo script fa lo swap delle gif al passaggio del mouse (effetto tasto)...
    わさび

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Si puo` fare.

    Tieni presente che ci sono istruzioni proprietarie IE, sulle quali non posso darti consigli.
    E tieni presente che c'e` una graffa inutile oppure manca la funzione (quella che racchiude tutta la sequenza di istruzioni).

    Io imposterei il lavoro con delle matrici:
    codice:
    var altx = new Image();
    altx.src = "dati/0.gif";
    
    var alt = new Array();
    var graphic = new Array();
    var graphicon = new Array();
    var graphica = new Array();
    var graphicaon = new Array();
    
    for (var i=0; i<10 i++) {
      alt[i] = new Image();
      alt[i].src = "dati/b2c"+i+".gif";
      graphic[i] = new Image();
      graphic[i].src = "dati/c"+i+".gif";
      graphicon[i] = new Image();
      graphicon[i].src = "dati/c"+i+"b.gif";
      graphica[i] = new Image();
      graphica[i].src = "dati/a"+i+".gif";
      graphicaon[i] = new Image();
      graphicaon[i].src = "dati/a"+i+"b.gif";
    }
    
    ...
    
    document.images[imageID].src = ????;
    Evita di usare eval() : e` deprecato. Dovresti eventualmente fare matrici bidimensionali oppure passare alla funzione la matrice.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Non sono molto esperto di JS: lo script diventerebbe così?
    Come sostituisco l'eval?
    In questo modo non funziona =_='
    Codice PHP:
    function addbookmark(){
    if (
    document.all)
    window.external.AddFavorite(bookmarkurl,bookmarktitle)
    }

    {
    var 
    altx = new Image();
    altx.src "dati/0.gif";

    var 
    alt = new Array();
    var 
    graphic = new Array();
    var 
    graphicon = new Array();
    var 
    graphica = new Array();
    var 
    graphicaon = new Array();

    for (var 
    i=0i<10 i++) {
      
    alt[i] = new Image();
      
    alt[i].src "dati/b2c"+i+".gif";
      
    graphic[i] = new Image();
      
    graphic[i].src "dati/c"+i+".gif";
      
    graphicon[i] = new Image();
      
    graphicon[i].src "dati/c"+i+"b.gif";
      
    graphica[i] = new Image();
      
    graphica[i].src "dati/a"+i+".gif";
      
    graphicaon[i] = new Image();
      
    graphicaon[i].src "dati/a"+i+"b.gif";
    }

    function 
    imageChange(imageID,imageName,imageID2,imageName2) {


    {
    document.images[imageID].src = eval(imageName ".src");
    document.images[imageID2].src = eval(imageName2 ".src");
    }


    わさび

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Il loop sostituise il tuo pezzo (ma non e` esattamente identico: c'e` qualche immagine in + delle tue, ed i nomi delle variabili sono diversi).

    Non so cosa puoi mettere al posto dell'eval().
    Dipende da cosa puoi passare. Io non conosco il tuo codice HTML.
    I nomi delle variabili sono cambiati, dato che ora sono dei vettori.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    due parole su eval:
    eval, come funzione Top-level non è deprecata, ma ne è sconsigliato l'uso per l'inefficienza della funzione (molto lenta) e per la sua sostituibilità nella maggior parte dei casi con sintassi più efficienti (anche se non è sostituibile in tutte le occasioni).
    eval (Top-level)
    Quello che è deprecato è il metodo eval di Object
    eval (metodo di object)

    nel tuo script, così a prima vista penso che si possa semplicemente scrivere:

    document.images[imageID].src = imageName + ".src";

    o (se è una variabile globale)

    document.images[imageID].src = window[imageName].src;


    ciauz
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

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.