triggers / distriggers la visualizzazione solo lavorando al secondo clic

Ho un div che viene display:none che dovrebbe apparire quando viene cliccata un’icona. La mia funzione funziona ma sempre al secondo clic. Qualche idea su cosa c’è di sbagliato nella funzione?

 document.getElementById('icon').onclick = function(){ var el = document.getElementById('div'); if ( el.style.display != 'none' ){ el.style.display = 'none'; } else { el.style.display = 'block'; }; }; 

Cambia il tuo test in “positivo”

 if ( el.style.display == 'block' ){ 

E funzionerà.

Il valore predefinito probabilmente non è esattamente “nessuno”.

Usare jQuery lo renderebbe molto più semplice, vedi http://api.jquery.com/toggle/

el.style si riferirebbe allo stile in inline , non allo stile global .

quindi cambia il tuo codice in

  

e il codice funzionerà.

http://jsfiddle.net/2hobbk7u/2/

Questo sta funzionando per me. Credo che quello che avresti potuto fare stava usando il div come selettore invece di un ID sulla tua variabile.

VIOLINO

HTML:

   

JS:

 document.getElementById('icon').onclick = function(){ var el = document.getElementById('test'); if ( el.style.display != 'none' ){ el.style.display = 'none'; } else { el.style.display = 'block'; }; };