Visualizzazione risultati 1 fino 12 di 12

Discussione: [JS] Titolo pagina dinamico ... problema secondi

  1. #1
    Guest

    Predefinito [JS] Titolo pagina dinamico ... problema secondi

    Ciao a tutti, sto creando con javascript un autosettamento del titolo automatico ogni secondo.
    Solo che i secondi hanno la seconda cifra quindi io con un if specifico se x>10 allora devo togliere la prima cifra (25->5) se invece e minore lo mostro così com'è!
    Ora questa funziona substr(1) non funziona... non mostra niente! Come posso fare??
    Codice PHP:
    var date = new Date();
    var
    x = date.getSeconds();
    var
    dd = "Meeee";
    var
    tt = "";

    if(
    x>10) { s = x.substr(1); } else { s = x; }
    document.write(s);
    Grazie mille!! Ciao Davide! =)

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    La funzione substr appartiene all'oggetto String e non all'oggetto Number.
    Nel tuo caso x è un numero e quindi la funzione substr non è definita.
    Per farla breve:
    Codice:
        var date = new Date();
        var x = date.getSeconds();
        var dd = "Meeee";
        var tt = "";
        
        if(x>10) { s = x.toString().substr(1); } else { s = x; }
        document.write(s);

  3. #3
    Guest

    Predefinito

    Ok grazie... però il titolo non si aggiorna correttamente! Deve cambiare ad ogni secondo...
    Codice PHP:
    function settitle() {

    var
    date = new Date();
    var
    x = date.getSeconds();
    var
    dd = "Cosa vuoi scrivere?";
    var
    tt = "";

    if(
    x>10) { s = x.toString().substr(1); } else { s = x; }

    if(
    s==0) { tt = dd+"..."; }
    if(
    s==1) { tt = dd+".."; }
    if(
    s==2) { tt = dd+"."; }
    if(
    s==3) { tt = dd+"..."; }
    if(
    s==4) { tt = dd+".."; }
    if(
    s==5) { tt = dd+"."; }
    if(
    s==6) { tt = dd+"..."; }
    if(
    s==7) { tt = dd+".."; }
    if(
    s==8) { tt = dd+"."; }
    if(
    s==9) { tt = dd+".."; }

    document.title = tt;
    setTimeout(settitle(),1000);
    }

    window.onLoad = settitle();
    Il tutto è in un file *.js incluso tramite apposito tag! =)
    Grazie mille!! *-*

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Codice:
    window.onload = settitle();
    Così viene richiamata la funzione e impostato all'evento onload il valore undefined, dato che la funzione non restituisce niente.
    E poi non è necessario aspettare il caricamento della pagina per impostare il titolo e la funzione setTimeout non va usata in quel modo !
    Codice:
    function settitle() {
    
        var date = new Date();
        var x = date.getSeconds();
        var dd = "Cosa vuoi scrivere?";
        var tt = "";
        
        if(x>10) { s = x.toString().substr(1); } else { s = x; }
    
        if(s==0) { tt = dd+"..."; }
        if(s==1) { tt = dd+".."; }
        if(s==2) { tt = dd+"."; }
        if(s==3) { tt = dd+"..."; }
        if(s==4) { tt = dd+".."; }
        if(s==5) { tt = dd+"."; }
        if(s==6) { tt = dd+"..."; }
        if(s==7) { tt = dd+".."; }
        if(s==8) { tt = dd+"."; }
        if(s==9) { tt = dd+".."; }
        
        document.title = tt;
        setTimeout('settitle()', 1000);
    }
    
    settitle();

  5. #5
    Guest

    Predefinito

    Ok grazie però ho due problemi:
    - Quando s è 9, io voglio che ricominci cioè s=9->s=0...
    - E' troppo lento, deve essere molto più veloce! xD
    Codice PHP:
    if(x>10) { s = x.toString().substr(1); } else { s = x; }

    if(
    s==0) { tt = dd+"..."; }
    if(
    s==1) { tt = dd+".."; }
    if(
    s==2) { tt = dd+"."; }
    if(
    s==3) { tt = dd+"..."; }
    if(
    s==4) { tt = dd+".."; }
    if(
    s==5) { tt = dd+"."; }
    if(
    s==6) { tt = dd+"..."; }
    if(
    s==7) { tt = dd+".."; }
    if(
    s==8) { tt = dd+"."; }
    if(
    s==9) { s = 0; }

    document.title = tt;
    setTimeout('settitle()',1000);
    Ho provato a mettere 100 invece di 1000 ma non cambia niente! =(
    Grazie mille!

  6. #6
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Spero che sia quello che ti serve. Questo non usa l'oggetto Date, così basta cambiare solo il parametro della funzione setTimeout per cambiare la frequenza
    Codice:
    function setTitle(){
        n = n?n-1:2;
        document.title = "Cosa vuoi scrivere?"+"...".substr(n);
        setTimeout(setTitle, 1000);
    }
    var n = 3;
    setTitle();
    Ultima modifica di karl94 : 24-05-2010 alle ore 18.38.18

  7. #7
    Guest

    Predefinito

    1) Non funziona!
    2) Non è quello che cerco, se leggi bene capirai cosa devo fare! =)

  8. #8
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

  9. #9
    Guest

    Predefinito

    Ok funziona stranamente... ma come hai fatto? xD
    Funziona meglio del mio! =(
    Senti ma a cosa serve quel % è la prima volta che lo incontro! ^^"
    E poi non dovrebbe tagliare la prima parte del titolo? Invece taglia l'ultima pian piano! :P

  10. #10
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Ti spiego: ho usato una variabile (n) per tenere il conto dei punti visualizzati, l'operatore modulo (%) serviva inizialmente per rincominciare il conto una volta arrivati a 3 (a%b è il resto della divisione di a per b), poi ho fatto delle modifiche e ho preferito usare una condizione.
    La ragione per cui substr venga applicato solo ai tre punti è semplice: le stringhe non sono unite, verranno concatenate grazie all'operatore +, ma prima viene eseguito il metodo substr(il . ha una precedenza maggiore rispetto al +)
    Codice:
    function setTitle(){
        n = n?n-1:2;
        document.title = "Cosa vuoi scrivere?"+"...".substr(n);
        setTimeout(setTitle, 1000);
    }
    var n = 0;
    setTitle();
    Nella prima riga della funzione, c'è una assegnazione con dentro una condizione:
    n è la condizione, ha valore di vero per qualsiasi numero diverso da 0, quindi se n==0, allora assegna ad n il valore di 2, altrimenti n-1.
    n assumerà quindi i valori: 0; 2; 1; 0; 2; 1; 0; 2; etc.
    Solo il primo 0 non verrà passato a substr.

  11. #11
    Guest

    Predefinito

    Ok e qualora io volessi toglierli tutti e tre? Cioè in questa sequenza:
    Ciao... -> Ciao.. -> Ciao. -> Ciao -> (ricomincia da capo!)
    Ho provato a smanettare un po' ma non funziona!
    Grazie mille! =)

  12. #12
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Basta modificare il 2 in 3, così:
    Codice:
    function setTitle(){
        n = n?n-1:3;
        document.title = "Cosa vuoi scrivere?"+"...".substr(n);
        setTimeout(setTitle, 1000);
    }
    var n = 0;
    setTitle();

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •