Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Errore document.getElementById()

    Salve a tutti!
    Premetto che sono più che a digiuno di JS, ad ogni modo ecco il problema:
    su un sito che sto costruendo ho dei (probabili) problemi di incompatibilità fra i JavaScript che sto usando, in particolare:
    http://dellascala.altervista.org/js/setFontSize.js
    http://dellascala.altervista.org/js/setSkin.js
    http://dellascala.altervista.org/js/newFinestra.js

    Ora il primo serve a ridimensionare i caratteri (http://www.constile.org/DHTML/ridime...e_i_caratteri/), il secondo per cambiare "al volo" i CSS (http://www.constile.org/DHTML/skin/) e il terzo per far scegliere all'utente se aprire o meno un link in una nuova finestra (http://pro.html.it/articoli/id_491/i...pag_3/pag.html).

    Il problema è che così caricati il "setSkin.js" non funziona e guardando nella "console javascript" di mozilla mi compare un errore del tipo:
    document.getElementById("newin") has no properties
    File sorgente: http://dellascala.altervista.org/js/newFinestra.js
    Così ho provato a togliere proprio "newFinestra.js" nell'head della pagina e il "setSkin.js" ha ripreso a funzionare!

    Avete suggerimenti per rimediare?


    grazie
    ciao
    drudo

    P.S. il sito in costruzione: http://dellascala.altervista.org/index.php

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Nella pagina di index non c'è nessun elemento con l'id "newin" ed definisci nell'evento onload della pagina una funzione che utilizza "newin".
    Nel file setskin.js fai anche là una ridefinizione dell'evento onload. E' l'ultima definizione che viene eseguita quindi è normale che se togli il file newfinestra.js non vi sia più l'errore.

    codice:
    <script type="text/javascript" src="js/setSkin.js"></script>
    onload è associato ad una funzione

    codice:
    <script type="text/javascript" src="js/newFinestra.js"></script>
    anche qua onload è associato ad una funzione

  3. #3
    Premesso che l'errore è quindi ovvio, c'è una soluzione per ovviare al non funzionamento di "setSkin.js" ?

    Dico nà cazzata:
    visto che in questa pagina (http://dellascala.altervista.org/ind...-%2024.12.2004) vi è un elemento con id="newin" (il checkbox) l'errore non compare! Ma a questo punto "setSkin.js" non dovrebbe funzionare?
    Scusami in caso se la riflessione fosse idiota



    drudo

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Secondo me dovresti farti un file js che contenga solo le funzioni che usano "newin" cosi lo puoi richiamare solo nelle pagine che contengono quell'elemento.

  5. #5
    Il fatto è che non posso mettere il file "newFinestra.js" solo dove mi serve poichè il sito è contenuto tutto (o quasi) in una pagina attraverso una sequenza di "elseif" nel body, quindi l'head della pagina è sempre quello...

    Niente, se non c'è soluzione vedo di eliminare quel js, ma mi spiacerebbe poichè molto utile (visto il codice XHTML del sito) nonchè di gran effetto.


    drudo

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da drudo
    Il fatto è che non posso mettere il file "newFinestra.js" solo dove mi serve poichè il sito è contenuto tutto (o quasi) in una pagina attraverso una sequenza di "elseif" nel body, quindi l'head della pagina è sempre quello...

    Niente, se non c'è soluzione vedo di eliminare quel js, ma mi spiacerebbe poichè molto utile (visto il codice XHTML del sito) nonchè di gran effetto.


    drudo
    Un'altra soluzione è di testare l'esistenza dell'oggetto "newin" per ogni funzione.

    Esempio :

    codice:
    onload=function(){
    if (document.getElementById("newin") == null) {
     return;
    }
    document.getElementById("newin").checked=false;
    nw=getCookie("nw");                     //reperisce il cookie
    if(nw!=null){
        if(nw=="yes"){
            document.getElementById("newin").checked=true;
            addNW();
            }
        }
    }

  7. #7
    Grazie mille ora non c'è più l'errore!
    Ma il "setSkin.js" perpetua nel non funzionare accidenti!
    Che cavolo può essere?

    ciao
    drudo


    P.S. se ti serve posso modificarti l'head (togliendo il js che credo dia problemi) e farti vedere che "setSkin.js" funziona.

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da drudo
    Grazie mille ora non c'è più l'errore!
    Ma il "setSkin.js" perpetua nel non funzionare accidenti!
    Che cavolo può essere?

    ciao
    drudo


    P.S. se ti serve posso modificarti l'head (togliendo il js che credo dia problemi) e farti vedere che "setSkin.js" funziona.
    E' normale che non funzioni. il file newFinestra viene richiamato dopo e quel file modifica l'evento onload modificato prima da setskin

  9. #9
    Mitico badaze
    Ho risolto mettendo i JS in quest'ordine:
    codice:
    <script type="text/javascript" src="js/newFinestra.js"></script>
    <script type="text/javascript" src="js/setSkin.js"></script>
    Grazie davvero!

    ciao
    drudo

    P.S. per la cronaca il CSS ad alta visibilità non è finito eh... magari qualcuno si chiedeva che schifo era quello che vedeva!

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.