Visualizzazione risultati 1 fino 15 di 15

Discussione: document.getElementById non funziona

  1. #1
    Guest

    Predefinito document.getElementById non funziona

    Ho messo così ma non funziona

    Codice PHP:
    #feste {
    font-family: times;
    font-size: 1.5em;
    font-style: italic;
    color: #ff5100;
    margin-top: 10px;
    display: block;
    text-align: center;
    }

    <
    script>

    function
    feste() {
    var
    calendario = new Date();
    var
    giorno = calendario.getDate();
    var
    mese = calendario.getMonth() + 1; // Gennaio=1
    if ((giorno >= 1 && mese == 5) || (giorno <= 2 && mese == 1)) document.getElementById("feste").innerHTML = "Buone Feste!";
    }
    }
    feste();
    </script>
    Ultima modifica di albenessereblog : 16-05-2020 alle ore 07.35.01

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,061

    Predefinito

    Deve esistere l'elemento HTML con quell'id.

    Inoltre feste() ti consiglio di chiamarlo al caricamento della pagina.

    Ciao!

  3. #3
    Guest

    Predefinito

    Così, ma non va.

    Codice:
     <body onload="feste();"> 	   	
      function feste() {
        var calendario = new Date();
        var giorno = calendario.getDate();
        var mese = calendario.getMonth() + 1; // Gennaio=1
        if ((giorno >= 1 && mese == 5) || (giorno <= 2 && mese == 1)) {
          
          document.getElementById("feste").innerHTML = "Buone Feste!";
        }
      }
    feste();

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,061

    Predefinito

    Deve esistere l'elemento HTML che ha quell'id! E comunque intendevo:

    Codice HTML:
    <!doctype html>
    <html lang="it">
    <head>
    <title> pagina di prova </title>
    <style>
    #feste {
        font-family: times;
        font-size: 1.5em; 
        font-style: italic; 
        color: #ff5100; 
        margin-top: 10px;
        display: block;
        text-align: center;
    }
    </style>
    <script>
    function feste() {
        var calendario = new Date();
        var giorno = calendario.getDate();
        var mese = calendario.getMonth() + 1; // Gennaio=1
        if ((giorno >= 1 && mese == 5) || (giorno <= 2 && mese == 1)) {
          
          document.getElementById("feste").innerHTML = "Buone Feste!";
        }
      }
      
      window.addEventListener('load', feste);
      
    </script>
    
    </head>
    <body>
    <p id="feste"></p>
    </body>
    </html>
    Ciao!

  5. #5
    Guest

    Predefinito

    Ho messo il tuo ma non funziona, se invece metto questo funziona:

    Codice:
    <script>
      //Feste dal 1-12 al 2-1		   	
      function feste() {
        var calendario = new Date();
        var giorno = calendario.getDate();
        var mese = calendario.getMonth() + 1; // Gennaio=1
        if ((giorno >= 1 && mese == 5) || (giorno <= 2 && mese == 1)) {
          document.write('<span class="feste">Buone Feste!</span>');
        }
      }
    feste(); 
    </script>

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,061

    Predefinito

    Citazione Originalmente inviato da albenessereblog Visualizza messaggio
    Ho messo il tuo ma non funziona
    In che senso non funziona? Come lo hai inserito? Dove?

    Ciao!
    Ultima modifica di alemoppo : 16-05-2020 alle ore 09.14.50

  7. #7
    Guest

    Predefinito

    Il tuo script l'ho messo al posto del mio originale, col tuo non appare "Buone Feste!"

    Ho letto che mettendo document.getElementById funziona meglio, però non so, volevo cambiarlo.

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,061

    Predefinito

    Rileggi le mie risposte precedenti. Non è sufficiente "inserire lo script" per visualizzare il risultato.

    Come vedi nella pagina che ti ho indicato, funziona correttamente. Però occorre utilizzarlo nel giusto modo!

    Non ho modificato lo script Javascript (né entrato nel merito del suo funzionamento): ho semplicemente copiato il tuo script indicato inizialmente.

    Il tuo script "che funziona" scrive l'elemento HTML (che dicevo non essere presente) tramite la document.write. In questo caso puoi anche utilizzare quella soluzione, ma hai impostato la classe CSS e non l'id: le regole CSS che hai specificato inizialmente non verranno utilizzate.

    Nota che io ho aggiunto l'elemento HTML <p id="feste"></p>
    La tua document.write scrive direttamente: <span class="feste">Buone Feste!</span>


    Ho letto che mettendo document.getElementById funziona meglio
    Non è che funziona meglio; sono cose differenti: la document.write puoi utilizzarla solamente durante il caricamento della pagina. La getElementById().innerHTML va utilizzata praticamente solo dopo il caricamento della pagina.
    Si tratta comunque di due cose completamente differenti, con la getElementById puoi variare anche altre proprietà come ad esempio gli stili CSS (comunque dopo il caricamento della pagina).

    Ciao!
    Ultima modifica di alemoppo : 16-05-2020 alle ore 09.21.17

  9. #9
    Guest

    Predefinito

    Adesso funziona, forse avevo sbagliato qualcosa io.

    Però, secondo te è meglio che la scritta appare subito o un pò dopo anche per il SEO? Io penso che il visitatore è più contento se vede tutto subito, o no?

    Funziona anche se metto span id
    Ultima modifica di albenessereblog : 16-05-2020 alle ore 09.30.47

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,061

    Predefinito

    Citazione Originalmente inviato da albenessereblog Visualizza messaggio
    Funziona anche se metto span id
    Certo, qualsiasi elemento HTML con l'id corretto funziona. Vedrai che funzionerà anche utilizzando <div id=..>.

    Citazione Originalmente inviato da albenessereblog Visualizza messaggio
    Però, secondo te è meglio che la scritta appare subito o un pò dopo anche per il SEO? Io penso che il visitatore è più contento se vede tutto subito, o no?
    Per il SEO è indifferente, visto che la scritta non compare tutti i giorni. A livello utente che la scritta "buone feste" appaia dopo il caricamento della pagina non credo influisca troppo. Però nel tuo caso la document.write() va benissimo perché fa quel che vuoi: non ha senso (in questo caso) attendere il caricamento della pagina.

    La cosa migliore comunque sarebbe farlo tramite PHP, perché eviti appunto di dover utilizzare javascript (non tutti i motori di ricerca lo interpretano e non è garantito che tutti i visitatori abbiano javascript attivo).

    Ciao!

  11. #11
    Guest

    Predefinito

    PHP è più pesante, se uno non ha attivo JS non vede le cose, non credo che esista un singolo utente che naviga con i JS disattivati.

    In PHP carica subito?

  12. #12
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,061

    Predefinito

    Citazione Originalmente inviato da albenessereblog Visualizza messaggio
    PHP è più pesante
    Puoi spiegare meglio? In che senso?


    Citazione Originalmente inviato da albenessereblog Visualizza messaggio
    non credo che esista un singolo utente che naviga con i JS disattivati.
    Praticamente è vero, ma mi è capitato di vedere qualcuno con JS disabilitato.

    Citazione Originalmente inviato da albenessereblog Visualizza messaggio
    In PHP carica subito?
    PHP agisce durante la generazione della pagina, è come se scrivessi l'HTML ogni volta; per farti capire, guarda l'HTML di questa pagina: lo script l'utente non lo vede nemmeno (perché è appunto PHP).

    Il codice della pagina è:
    Codice PHP:
    <span><?php
    $giorno
    = date('d');
    $mese = date('m');
    if ((
    $giorno >= 1 && $mese == 5) || ($giorno <= 2 && $mese == 1))
    echo
    'Buone Feste!';
    ?></span>
    (ovviamente manca tutto il resto della pagina, come <html> <body> etc).

    Ciao!

  13. #13
    Guest

    Predefinito

    Per più pesante intendo che deve fare una chiamata apposita nel server e poi lo deve trasformare in HTML, o sbaglio?
    Però è più sicuro.

  14. #14
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,061

    Predefinito

    Citazione Originalmente inviato da albenessereblog Visualizza messaggio
    Per più pesante intendo che deve fare una chiamata apposita nel server e poi lo deve trasformare in HTML, o sbaglio?
    Ni, non è noto come sia il funzionamento dei server, si tratta comunque di un tempo di attesa trascurabile, di alcuni ordini di grandezza inferiori rispetto al tempo di attesa del transito dei dati dal server all'utente.

    Ciao!

  15. #15
    Guest

    Predefinito

    Allora tengo il php

Regole di scrittura

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