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

    Output di uno script in un punto preciso del documento. Dov'è l'errore ??

    Salve ragazzi...

    voglio realizzre l'output di uno script in un punto preciso del documento html, attraverso le proprietà DOM HTML :

    document.getElementById (id)
    e

    innerHTML

    l'output avverrà in uno span, e quindi preparo lo span e gli do un id:

    <span id="datastri"> </span>

    Non capisco però perché il tutto non funziona...

    Ecco il codice:


    <code>

    <script type="text/javascript" language="javascript">

    dada=null;
    dastri=null;
    dadad=new Date();
    function initialize() {
    dada=dadacrea(dadad);
    var dastri='<span>' + dada + ' UTC </span>';
    // $(dastri).appendTo('#datastri');
    document.getElementById('datastri').innerHTML = dastri;
    }
    function dadacrea(daobj) {
    var aaaa=daobj.getUTCFullYear();
    var mm = daobj.getUTCMonth();
    var mm= Number(mm) + 1 ;
    var mm='0' + mm;
    mm=mm.substr(mm.length-2,2);
    var gg='0' + (daobj.getUTCDate());
    gg=gg.substr(gg.length-2,2);
    var hh='0' + (daobj.getUTCHours());
    hh=hh.substr(hh.length-2,2);
    var min='0' + (daobj.getUTCMinutes());
    min=min.substr(min.length-2,2);
    var ss='0' + (daobj.getUTCSeconds());
    ss=ss.substr(ss.length-2,2);
    return aaaa + '-' + mm + '-' + gg + 'T' + hh + ':' + min + ':' + ss + 'Z' ;
    }
    </script>
    </head>


    <span id="datastri"> </span>

    </code>



    1) la function dadacrea(daobj) calcola l'orario e restituisce come valore di espressione :
    return aaaa + '-' + mm + '-' + gg + 'T' + hh + ':' + min + ':' + ss + 'Z' ;

    2) a dada è associato "dadacrea(dadad)" infatti vi è: dada=dadacrea(dadad);


    3) e abbiamo: var dastri='<span>' + dada + ' UTC </span>';

    4) e infine abbiamo: document.getElementById('datastri').innerHTML = dastri;
    che sostiutisce allo span con id "datastri" il valore della variabile dastri .... ovvero l'orario avuto dalla funzione.


    Ma perché tutto ciò non funziona??? e nello span non compare l'orario?

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    codice:
    <script type="text/javascript" language="javascript">
    
    //lanciamo lo script al caricamento
    onload=function(){
    var daobj=new Date(); 
    var aaaa=daobj.getUTCFullYear();
    var mm = daobj.getUTCMonth();
    var mm= Number(mm) + 1 ;
    var mm='0' + mm;
    mm=mm.substr(mm.length-2,2);
    var gg='0' + (daobj.getUTCDate());
    gg=gg.substr(gg.length-2,2);
    var hh='0' + (daobj.getUTCHours());
    hh=hh.substr(hh.length-2,2);
    var min='0' + (daobj.getUTCMinutes());
    min=min.substr(min.length-2,2);
    var ss='0' + (daobj.getUTCSeconds());
    ss=ss.substr(ss.length-2,2);
    document.getElementById('datastri').innerHTML = aaaa + '-' + mm + '-' + gg + 'T' + hh + ':' + min + ':' + ss + 'Z' ;
    }
    </script>
    <span id="datastri"> </span>
    Non ho verificato se script "orologio" sia corretto e funzioni, ritengo di si, se non vuoi che parta al caricamento (onload) lo togli e nomi la funzione che richiamerai all'evento che preferisci
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    codice:
    <script type="text/javascript" language="javascript">
    
    //lanciamo lo script al caricamento
    onload=function(){
    var daobj=new Date(); 
    var aaaa=daobj.getUTCFullYear();
    var mm = daobj.getUTCMonth();
    var mm= Number(mm) + 1 ;
    var mm='0' + mm;
    mm=mm.substr(mm.length-2,2);
    var gg='0' + (daobj.getUTCDate());
    gg=gg.substr(gg.length-2,2);
    var hh='0' + (daobj.getUTCHours());
    hh=hh.substr(hh.length-2,2);
    var min='0' + (daobj.getUTCMinutes());
    min=min.substr(min.length-2,2);
    var ss='0' + (daobj.getUTCSeconds());
    ss=ss.substr(ss.length-2,2);
    document.getElementById('datastri').innerHTML = aaaa + '-' + mm + '-' + gg + 'T' + hh + ':' + min + ':' + ss + 'Z' ;
    }
    </script>
    <span id="datastri"> </span>
    Non ho verificato se script "orologio" sia corretto e funzioni, ritengo di si, se non vuoi che parta al caricamento (onload) lo togli e nomi la funzione che richiamerai all'evento che preferisci
    Perdona la mia estrema ignoranza.. Ma sono all'inizio con js e non ho capito cosa ha scritto :'(
    e non capisco perche ad "innerHTML= x" hai sostituito x con il l'espressione associata a return

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Perdona tu, non puoi sperare che il forum ti faccia da tutor e ti spieghi js (per questo ci sono altri metodi libri, corsi, etc...).
    Il tuo script non andava l'ho ottimizzato (togliendo cose inutili) ora (dopo una verifica) lo ulteriormente sistemato http://webandylab.altervista.org/orologio.html se oltre allo script ti serve una spiegazione non sono la persona adatta (perché sono auto didatta e potrei dare una spiegazione errata) attendi altri utenti più preparati sulla teoria
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    ti capisco...hai perfettamente ragione... COMUNQUE

    ora che hai ottimizzato lo script non capisco come potrei fare una cosa....

    prima (con lo script originale postato all'inizio del topic) avevano senso alcuni script presenti più in la che non ho postato.. ad esempio:


    <code>

    var hh=new Number(dada.substr(11,2));
    var min=new Number(dada.substr(14,2));

    </code>

    e ricordo che vi era:

    dada=dadacrea (dadad);

    e la funzione che calcola l'orario si chiamava:

    function dadacrea(daobj)


    Qui nei due script che ho postato con il metodo Substr venivano creati due oggetti ottenendo sottostringhe di lunghezza specifica dall'espressione associata a return della funzione dadacrea (da obj) . E l'espressione sarebbe:

    aaaa + '-' + mm + '-' + gg + 'T' + hh + ':' + min + ':' + ss + 'Z' ;


    quindi prendendo lo script

    var hh=new Number(dada.substr(11,2));

    si otteneva il valore dell'ora...


    ma con lo script ottimizzato ciò non è più possibile....


    come si può risolvere ? :/






    perdonami ancora....


    Ti ringrazio veramente!

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao,
    nel tuo post iniziale vedo che hai inserito lo script dentro la funzione initialize() ma non vedo la chiamata a tale funzione. E' palese che non potrà succedere niente se quella funzione non è richiamata.
    Ora, dal momento che stai interagendo con gli elementi del DOM, è essenziale che quella funzione sia richiamata dopo che la pagina è stata caricata completamente. Ci sono diversi modi per farlo. Uno di questi è l'utilizzo del gestore di evento onload.
    Tralasciando le altre modifiche, Andrea ha giustamente utilizzato l'evento onload a cui ha associato una funzione dove ha inserito tutto lo script.
    Ad ogni modo, prendendo il tuo script così com'è, potresti comunque lanciare la funzione initialize inserendo semplicemente una riga del genere:
    codice:
    onload = initialize;
    o richiamarla dal tag body, in questo modo:
    codice:
    <body onload="initialize()">
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ciao,
    nel tuo post iniziale vedo che hai inserito lo script dentro la funzione initialize() ma non vedo la chiamata a tale funzione. E' palese che non potrà succedere niente se quella funzione non è richiamata.
    Ora, dal momento che stai interagendo con gli elementi del DOM, è essenziale che quella funzione sia richiamata dopo che la pagina è stata caricata completamente. Ci sono diversi modi per farlo. Uno di questi è l'utilizzo del gestore di evento onload.
    Tralasciando le altre modifiche, Andrea ha giustamente utilizzato l'evento onload a cui ha associato una funzione dove ha inserito tutto lo script.
    Ad ogni modo, prendendo il tuo script così com'è, potresti comunque lanciare la funzione initialize inserendo semplicemente una riga del genere:
    codice:
    onload = initialize;
    o richiamarla dal tag body, in questo modo:
    codice:
    <body onload="initialize()">
    è vero hai ragione...

    ma con lo script ottimizzato ovvero:

    codice:
     onload=function(){
     setInterval(function dadacrea(){
    var daobj=new Date(); 
    var aaaa=daobj.getUTCFullYear();
    var mm = daobj.getUTCMonth();
    var mm= Number(mm) + 1 ;
    var mm='0' + mm;
    mm=mm.substr(mm.length-2,2);
    var gg='0' + (daobj.getUTCDate());
    gg=gg.substr(gg.length-2,2);
    var hh='0' + (daobj.getUTCHours());
    hh=hh.substr(hh.length-2,2);
    var min='0' + (daobj.getUTCMinutes());
    min=min.substr(min.length-2,2);
    var ss='0' + (daobj.getUTCSeconds());
    ss=ss.substr(ss.length-2,2);
    document.getElementById('datastri').innerHTML = aaaa + '-' + mm + '-' + gg + ' T ' + hh + ':' + min + ':' + ss + ' Z'},1000)
    }
    i due script

    codice:
     var hh=new Number(dada.substr(11,2));
    var min=new Number(dada.substr(14,2));
    non potranno funzionare.. infatti la "funzione orologio" prima si chiamva dadacrea ma soprattutto vi era inserito nella funziona initialize

    codice:
     dada= dadacrea;
    e ora come si risolve?

  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Chiaro.
    Come ho scritto sopra, puoi usare il tuo script (non quello ottimizzato) e inserirci semplicemente
    codice:
    onload = initialize;
    Il tutto dovrebbe funzionare.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  9. #9
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Chiaro.
    Come ho scritto sopra, puoi usare il tuo script (non quello ottimizzato) e inserirci semplicemente
    codice:
    onload = initialize;
    Il tutto dovrebbe funzionare.
    ma utilizzando lo script ottimizzato e quindi eliminando ciò che ha eliminato Andrea, come potrei risolvere il problema del

    codice:
     var hh=new Number(dada.substr(11,2));
    var min=new Number(dada.substr(14,2));
    qualche dritta ?

  10. #10
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Se funziona come ha consigliato killerworm non ostinarti a volerlo ottimizzare perché probabilmente non è possibile
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.