Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Javascript particolare

    Ciao a tutti!
    Siccome ho una pagina web che contiene alcuni "select" con moltissime "option", per velocizzare i tempi di caricamento avevo pensato a un sistema che carica le option soltanto quando si clicca sul "select"

    E' possibile farlo con javascript o anche in un altro modo?

    Grazie mille!

  2. #2
    Ho fatto questo script "su misura" (o quasi, vista la lunghezza... damnit ) per le tue necessità.
    PS ti consiglierei di richiamarlo da un file esterno...

    <HTML><HEAD>
    <SCRIPT language="Javascript1.2">
    <!--
    var d1=false;
    var d2=false;
    var d3=false;
    //-->
    </SCRIPT>
    </HEAD>
    <BODY>
    <FORM action="filloption" method="post">
    <SELECT id="1" onMouseOver="fill(1);" onFocus="fill(1);">
    <OPTION selected>----------------
    </SELECT>



    <SELECT id="2" onMouseOver="fill(2);" onFocus="fill(2);">
    <OPTION selected>----------------
    </SELECT>



    <SELECT id="3" onMouseOver="fill(3);" onFocus="fill(3);">
    <OPTION selected>----------------
    </SELECT>



    </FORM>
    <SCRIPT language="Javascript1.2">
    <!--
    ///////Coded by 16437952///////
    function fill(id)
    {
    var nid=""+id;
    if ((d1==false)&&(nid=="1"))
    {
    var opt11=document.createElement("OPTION");
    var opt12=document.createElement("OPTION");
    var opt13=document.createElement("OPTION");

    document.getElementById(nid).options.add(opt11);
    document.getElementById(nid).options.add(opt12);
    document.getElementById(nid).options.add(opt13);

    opt11.innerText="Italia";
    opt12.innerText="Francia";
    opt13.innerText="Germania";

    opt11.value="it";
    opt12.value="fr";
    opt13.value="de";

    d1=true;
    }

    if ((d2==false)&&(nid=="2"))
    {
    var opt21=document.createElement("OPTION");
    var opt22=document.createElement("OPTION");
    var opt23=document.createElement("OPTION");

    document.getElementById(nid).options.add(opt21);
    document.getElementById(nid).options.add(opt22);
    document.getElementById(nid).options.add(opt23);

    opt21.innerText="Mela";
    opt22.innerText="Pesca";
    opt23.innerText="Ananas";

    opt21.value="Mela";
    opt22.value="Pesca";
    opt23.value="Ananas";

    d2=true;
    }

    if ((d3==false)&(nid=="3"))
    {
    var opt31=document.createElement("OPTION");
    var opt32=document.createElement("OPTION");
    var opt33=document.createElement("OPTION");

    document.getElementById(nid).options.add(opt31);
    document.getElementById(nid).options.add(opt32);
    document.getElementById(nid).options.add(opt33);

    opt31.innerText="Coca cola";
    opt32.innerText="Aranciata";
    opt33.innerText="Sprite";

    opt31.value="Coca cola";
    opt32.value="Aranciata";
    opt33.value="Sprite";

    d3=true;
    }
    }
    //-->
    </SCRIPT></BODY></HTML>
    Open ur mind 'n ENJOY da' power of JavaSkript :-)...
    Coded by 16437952

  3. #3
    Ciao e grazie mille per l'aiuto...
    ...però c'è una cosa che non capisco:

    quando la pagina viene caricata e viene incontrato l'eventuale riferimento al javascript esterno, questo viene caricato e quindi non ho risolto il mio problema.

    Ovvero mi sembra che in questo modo le option vengono caricate comunque subuto ma vengon solo visualizzate quando ci passi sopra.

    Capisco male?

  4. #4
    Non credo proprio, perché la funzione di riempimento fill(n) viene attivata SOLO onMouseOver e onFocus sull'elemento, passando alla funzione il parametro corrispondente alla casella in questione. La funzione controlla il parametro, e, grazie ad esso, riesce ad isolare la casella di testo, e ad aggiungere SOLO ad esso le voci. Infatti le voci non sono visualizzate ma Create dal metodo che, non a caso, si chiama createElement.
    Open ur mind 'n ENJOY da' power of JavaSkript :-)...
    Coded by 16437952

  5. #5
    Io non me ne intendo moltissimo però tu mi assicuri che:

    Se il file js contenente il javascript e l'elenco delle option inciderebbe circa 2 secondi sulla pagina web (tempo calcolato da dreamweaver), questi due secondi di attesa si avrebbero passando soppra al "select" anzichè al momento del caricamento della pagina?

    Se mi dici di "si" mi fido, tra qualche giorno metto on line, provo e ti faccio sapere.

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    No.

    Non si puo' caricare un javascript "al volo" nella stessa pagina... al limite potresti usare un frame nascosto.

    Pero' puoi leggere questo articolo ...

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    br1, non capisco cosa intendi...
    ...stai dicendo che le mie supposizioni sono vere?
    ...e che qindi non risolvo il mio problema in questo modo?

    Ora leggo l'articolo!

  8. #8
    Br1, ho appurato che il javascript di 16437952 non rislve il mio problema quindi...
    ...mi spieghi cosa intendevi con "potresti usare un frame nascosto".

    In che modo un frame nascosto permetterebbe di scaricare le option in un momento diverso?

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Supponi di avere un frameset:


    <frameset rows="0,*">
    <frame name="nascosto" src="">
    <frame name="principale" src="main.htm">
    </frameset>

    con la relativa pagina principale:


    <script>
    var p = new Array("");
    function carica() {
    p = parent.nascosto.province;
    L = p.length;
    o = document.italia.pro.options;
    for (var i=0;i<L;i++) {
    o[i] = new Option(p[i])
    }
    }
    </script>
    <body>
    <form name="italia">
    <select name="reg"
    onchange="this.form.pro.length=0;parent.nascosto.l ocation.href=this.options[this.selectedIndex].value+'.htm';">
    <option value="null">Scegli la Regione</option>
    <option value="vao">Valle d'Aosta</option>
    ...
    <option value="sar">Sardegna</option>
    </select>
    <select name="pro">
    <option></option>
    </select>
    </form>
    </body>

    ed infine di prepararti una paginetta per ogni regione:


    <script>
    var province = new Array("Aosta");
    parent.principale.carica();
    </script>

    ... eccetera ...


    <script>
    var province = new Array("Cagliari","Nuoro","Oristano","Sassari");
    parent.principale.carica();
    </script>

    Salva il tutto e provalo

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  10. #10
    Cavoli Br1!!!
    Il tuo codice sembra proprio che funzioni!

    Insomma le cose vengono davvero caricate solo quando fai il primo select!

    Infatti se inserisco una marea di option ci mette qualche frazione di secondo in + a darle in output.
    Questa cosa col js consigliatomi all'inizio non succedeva ed è stato proprio quello a farmi intuire che le voci venivano caricate insieme alla pagina!

    Comunque... ...a grandi linee (molto grandi) ho capito cosa fa il codice, ma non capisco bene perchè bisogna per forza sfruttare il frame nascosto.
    La parte di codice dove lo usi infatti non mi è chiara.
    Mi puoi dire a cosa serve!?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.