[Javascript] Problema richiamo funzione

samurai.sette

Utente Attivo
17 Dic 2015
232
6
18
Ciao a tutti. Vorrei chiedervi un aiuto in merito ad una funzione javascript che non riesco ad associare ad un bottone.
Quello che ho scritto è questo.
Funzione javascript:
Codice:
    function js_unita_misure()
    {
        var js_unita_misure = document.getElementById("unita_misure");
        var js_documenti = document.getElementById("documenti");
        var js_dati_filtrati = document.getElementById("dati_filtr");
        var js_dati_tabellari = document.getElementById("dati_tab");
       
        if (js_unita_misure.style.visibility === "hidden")
        {
            js_unita_misure.style.visibility = "visible";
            js_dati_filtrati.style.visibility = "hidden";
            js_dati_tabellari.style.visibility = "hidden";
            js_documenti.style.visibility = "hidden";
        }
    }
HTML:
HTML:
<a onClick="js_unita_misure()">Unità di misure</a>
Preciso che la funzione javascript è inserita tra i TAG "head".
Scrivendo in questo modo la funzione non funziona, ma immediatamente prima c'è ne un'altra quasi identica che associata ad un altro bottone funziona perfettamente.
Qualcuno mi sa dire quale può essere il problema?
Ciao, grazie mille
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, da sola funziona. E' probabile che hai assegnato lo stesso id a p+u di un elemento html
 

the_jurgs

Nuovo Utente
6 Apr 2017
31
1
8
Puoi postare tutto il codice? La console del browser cosa dice?

Inviato dal mio ONE A2003 utilizzando Tapatalk
 

samurai.sette

Utente Attivo
17 Dic 2015
232
6
18
Ciao a tutti e grazie per le risposte.
Per criric.
Per quanto riguarda gli ID, l'avevo già verificato e sono tutti diversi.
Per The_jurgs.
La console del browser dice questo: TypeError: js_unita_misure is null
Questo è il codice che ho scritto:
Codice:
<head>
<meta charset="utf-8">
<title>Monitoraggio</title>
<link href="stili_css/monitoraggio.css" rel="stylesheet" type="text/css">

    <script type="text/javascript">
    function nascondiDiv(idDiv) {
    document.getElementById(idDiv).style.display = "none";
    }

    function mostraDiv(idDiv) {
    document.getElementById(idDiv).style.display = "block";
    }

    function printContent(el) {
    var restorepage = document.body.innerHTML;
    var printcontent = document.getElementById(el).innerHTML;
    document.body.innerHTML = printcontent;
    window.print();
    document.body.innerHTML = restorepage;
    }
    
    function stampa_tutto(){
    var restorepage = document.body.innerHTML;
    var print_graph = document.getElementById('linechart_material').innerHTML;
    var print_table = document.getElementById('table_div1').innerHTML;
    document.body.innerHTML = print_graph + print_table;
    window.print();
    document.body.innerHTML = restorepage;   
}
        
    function js_dati_tab()
    {
        var js_dati_tabellari = document.getElementById("dati_tab");
        var js_dati_filtr = document.getElementById("dati_filtr");
        var js_documenti = document.getElementById("documenti");
        var js_unita_misure = document.getElementById("unita_misure");
        
        if (js_dati_tabellari.style.visibility === "hidden")
        {
            js_dati_tabellari.style.visibility = "visible";
            js_dati_filtr.style.visibility = "hidden";
            js_documenti.style.visibility = "hidden";
            js_unita_misure.style.visibility = "hidden";
        }
    }

    function js_dati_filtr()
    {
        var js_dati_filtrati = document.getElementById("dati_filtr");
        var js_dati_tabellari = document.getElementById("dati_tab");
        var js_documenti = document.getElementById("documenti");
        var js_unita_misure = document.getElementById("unita_misure");
        
        if (js_dati_filtrati.style.visibility === "hidden")
        {
            js_dati_filtrati.style.visibility = "visible";
            js_dati_tabellari.style.visibility = "hidden";
            js_documenti.style.visibility = "hidden";
            js_unita_misure.style.visibility = "hidden";
        }
    }
    
    function js_documenti()
    {
        var js_documenti = document.getElementById("documenti");
        var js_dati_filtrati = document.getElementById("dati_filtr");
        var js_dati_tabellari = document.getElementById("dati_tab");
        var js_unita_misure = document.getElementById("unita_misure");
        
        if (js_documenti.style.visibility === "hidden")
        {
            js_documenti.style.visibility = "visible";
            js_dati_filtrati.style.visibility = "hidden";
            js_dati_tabellari.style.visibility = "hidden";
            js_unita_misure.style.visibility = "hidden";
        }
    }

    function js_unita_misure()
    {
        var js_unita_misure = document.getElementById("unita_misure");
        var js_documenti = document.getElementById("documenti");
        var js_dati_filtrati = document.getElementById("dati_filtr");
        var js_dati_tabellari = document.getElementById("dati_tab");
        
        if (js_unita_misure.style.visibility === "hidden")
        {
            js_unita_misure.style.visibility = "visible";
            js_dati_filtrati.style.visibility = "hidden";
            js_dati_tabellari.style.visibility = "hidden";
            js_documenti.style.visibility = "hidden";
        }
    }
</script>
</head>
<body>
<div id="menu">
    <ul id="dropdown_menu">
        <li class="barra_menu"><a><img src="Immagini/ico_dati.png" width="24" height="24" alt=""/> Dati</a>
            <ul>
                <li><a onClick="js_dati_tab()">Visualizza i dati tabellari</a></li>
                <li><a onClick="js_dati_filtr()">Visualizza i dati filtrati</a></li>
                <li><a>Estrai tutti i dati in excel</a></li>
            </ul>
        </li>
        <li class="barra_menu"><a><img src="Immagini/ico_documenti.png" width="24" height="24" alt=""/> Documenti</a>
            <ul>
                <li><a onClick="js_documenti()">Visualizza i documenti</a></li>
            </ul>
        </li>
        <li class="barra_menu"><a><img src="Immagini/ico_aiuto1.png" width="20" height="20" alt=""/> Aiuto</a>
            <ul>
                <li><a onClick="js_unita_misure()">Unità di misure</a></li>
                <li><a>Guida all'utilizzo</a></li>
            </ul>
        </li>
        <li class="barra_menu"><a><img src="Immagini/ico_freccia.png" width="20" height="20" alt=""/></a>
            <ul>
                <li><a>Esci</a></li>
            </ul>
        </li>
    </ul>
</div>
.
.
.
Secondo voi cosa può essere?
Ciao, grazie
 

the_jurgs

Nuovo Utente
6 Apr 2017
31
1
8
Da come dice l'errore la variabile js_unita_misure é nullo, questo succede perché fai riferimento ad un elemento che non esiste o che contiene un valore null al suo interno. Nel codice che hai postato non c'è nessun elemento che abbia come id unita_misure

Inviato dal mio ONE A2003 utilizzando Tapatalk
 

samurai.sette

Utente Attivo
17 Dic 2015
232
6
18
Ciao, grazie per la risposta.
Perdonami, nel codice che ho riportato prima nel tag body ho riportato soltanto il div menu.
Il div unita_misure esiste ed è questo:
Codice:
<div id="unita_misure" style="visibility:hidden">
.
.
.
</div>
Non riesco proprio a capire dov'è il problema. Per favore aiutatemi a trovarlo.
Ciao, grazie.
 

the_jurgs

Nuovo Utente
6 Apr 2017
31
1
8
Posta per favore il codice di tutta la pagina, sicuramente si tratta di un errore di formattazione, ma devi postare il codice dell'intera pagina o se la pagina é sul web il suo link, tante volte può essere un semplice apice non chiuso qualche rigo più in su

Inviato dal mio ONE A2003 utilizzando Tapatalk
 

samurai.sette

Utente Attivo
17 Dic 2015
232
6
18
Ciao. Ho provato a fare una cosa.
Ho riscritto il codice a ritroso un pezzo alla volta su un nuovo file e ho notato questo.
Inserendo nel body soltanto il div "unita_misure", questo funziona perfettamente.Immediatamente dopo ho inserito il div "documenti" e il div "unita_misure" smette di funzionare.
Questo è il codice dei due div:
Codice:
<!-- DIV DOCUMENTI -->
    <div id="documenti" style="visibility:hidden">
        <p style="font-weight:bold; padding-top:5px"><font color="#00A5DD">D</font><font color ="#2EB800">OCUMENTI</font></p>
    <br />
<p>
    <?php
        // query per ottenere l'elenco dei files nel DB
        $query = "SELECT * FROM documenti WHERE nome_file LIKE '$lavoro%'";
        $risultato = mysql_query($query) or die('Query non valida: ' . mysql_error());

        // se ci sono files nel DB
        if(mysql_numrows($risultato))
        {
        // estrazione dei risultati e stampa dei links ai files
          while ($tmp = mysql_fetch_array($risultato))
          {
            echo "<p><a href=\"mostra.php?id=$tmp[id_file]\">$tmp[nome_file]</a></p>\n";
            echo "<br />";
          }
        }
        else
        {
          echo '<p>Nessun file presente nel database</p>';
        }
    ?>
</p>

    </div>
<!-- DIV DOCUMENTI -->
    
<!-- DIV UNITA' DI MISURE -->
    <div id="unita_misure" style="visibility:hidden">
        <p style="font-weight:bold; padding-top:5px; text-align:center;"><font color="#00A5DD">U</font><font color ="#2EB800">NITA'</font>
        <font color="#00A5DD">D</font><font color ="#2EB800">I</font>
        <font color="#00A5DD">M</font><font color ="#2EB800">ISURE</font></p>
        <p><font color ="#000000"><img src="Immagini/ico_righello.png" width="24" height="24" alt=""/> Fessure: mm
        <br />
        <img src="Immagini/ico_termometro.png" width="24" height="24" alt=""/> Temperatura: °C
        <br />
        <img src="Immagini/ico_goniometro.png" width="24" height="24" alt=""/> Angoli: gradi sessadecimali</font></p>
    </div>
Non ti inserisco tutto il codice perchè è lungo circa 830 righe!!!
Ciao, grazie.
 

the_jurgs

Nuovo Utente
6 Apr 2017
31
1
8
A questo punto credo che il problema sia nell'output, puoi mettere un Link alla pagina o la sorgente che visualizzi dal browser? Non preoccuparti per il numero di righe ;)

Inviato dal mio ONE A2003 utilizzando Tapatalk