Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Osmo Nano: la piccola fotocamera alla prova sul campo
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
La nuova fotocamera compatta DJI spicca per l'abbinamento ideale tra le dimensioni ridotte e la qualità d'immagine. Può essere installata in punti di ripresa difficilmente utilizzabili con le tipiche action camera, grazie ad una struttura modulare con modulo ripresa e base con schermo che possono essere scollegati tra di loro. Un prodotto ideale per chi fa riprese sportive, da avere sempre tra le mani
FUJIFILM X-T30 III, la nuova mirrorless compatta
FUJIFILM X-T30 III, la nuova mirrorless compatta
FUJIFILM X-T30 III è la nuvoa fotocamera mirrorless pensata per chi si avvicina alla fotografia e ricerca una soluzione leggera e compatta, da avere sempre a disposizione ma che non porti a rinunce quanto a controllo dell'immagine.
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati
Da Las Vegas, la visione di Larry Ellison e la concretezza di Clay Magouyrk definiscono la nuova traiettoria di Oracle: portare l’intelligenza artificiale ai dati, non i dati all’intelligenza, costruendo un’infrastruttura cloud e applicativa in cui gli agenti IA diventano parte integrante dei processi aziendali, fino al cuore delle imprese europee
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-02-2007, 13:17   #1
Isomarcus
Senior Member
 
L'Avatar di Isomarcus
 
Iscritto dal: Mar 2003
Messaggi: 5199
[JS] Script "chiusura" menu

salve a tutti, sto impazzendo con questo semplicissimo script js:

Codice:
window.onload=expand;

function expand(id) {

	var elem = document.getElementById(id);

	for (var i = 1; i<=20; i++) {

	if (document.getElementById('submenu'+i)) {document.getElementById	('submenu'+i).style.display='none';}

	}

	if (elem) {d.style.display='block';}

	}
quello che fa in pratica è espandere dei submenu quando si clicca sull'elemento padre, e contemporaneamente chiudere gli altri già aperti... ora quello che vorrei aggiungere a questa funzione è la possibilità di chiudere il submenu quando si clicca una seconda volta sull'elemento padre... beh parola mia ho provato almeno 10 modi diversi ma non funziona... quello che avevo provato io è controllare se il submenu è già espanso (cioè se il submenu ha display = block) e in caso chiuderli mettendo display = none... ma temo che i controlli condizionali su proprietà di stile (in questo caso display) non funzionino come spero io
preciso che ho cercato di rendere lo script il più leggero e snello possibile, è per questo che è così striminzito... il sito è centrato su tanto php quindi non voglio esagerare col js
Isomarcus è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2007, 13:40   #2
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Ma dove li fai i controlli che dici?
Non puoi mettere il codice per intero integrato in una paginetta da vedere un attimo dove sta l'inghippo?

Ultima modifica di MEMon : 18-02-2007 alle 13:44.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2007, 15:43   #3
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Isomarcus Guarda i messaggi
Codice:
window.onload=expand;

function expand(id) {
    ....
}
Rispondi a questa domanda: che cosa ti aspetti che ti venga passato nel parametro 'id'???

Tu hai assegnato una funzione a window.onload. L'evento onload viene generato quando la pagina è stata caricata e fin qui ci siamo. Ma non ti viene certamente passato un 'id' di un elemento!!!!
Diciamo che sui browser IE non viene passato alcun valore (id sarebbe undefined), sui browser Mozilla e simili viene passato un oggetto di tipo Event.

Per dirla in breve: quando una tua funzione è usata come "event handler", non sei tu che puoi specificare quali parametri ricevere!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2007, 17:59   #4
Isomarcus
Senior Member
 
L'Avatar di Isomarcus
 
Iscritto dal: Mar 2003
Messaggi: 5199
scusa, forse non ho capito, ma l'id viene passato solo quando la funzione viene chiamata dal menu (tramite un onclick), quello che fa al caricamento della pagina è solo chiudere tutti gli elementi con id "submenu" aperti!


questo è un piccolo esempio del codice che usa quello script

Codice:
<dt onclick="javascript:show('submenu1');">Menu1</dt>
<dd id="submenu1">
<ul>
<li><a href="pag.html">submenu1</a></li>
<li><a href="#">submenu2</a></li>
<li><a href="#">submenu3</a></li>
</ul>
</dd></dt>
la funzione così com'è funziona perfettamente, ma assolutamente non riesco a fargli chiudere i submenu cliccando sull'elemento padre (sul dt per capirci)
la cosa che ho provato per prima è stata chiamare prima un'altra funzione, che in pratica controllava se gli elementi con id "submenu" successivi all'elemento padre avevano proprietà display = block e nel qual caso la settava a none, mentre in caso contrario chiamava la funzione show ... ma il controllo condizionale su style.display non funziona
Isomarcus è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2007, 09:19   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Isomarcus Guarda i messaggi
scusa, forse non ho capito, ma l'id viene passato solo quando la funzione viene chiamata dal menu (tramite un onclick), quello che fa al caricamento della pagina è solo chiudere tutti gli elementi con id "submenu" aperti!
Ripeto: tu hai fatto una funzione che si chiama expand, che si aspetta di ricevere un 'id' da passare a getElementById. Hai assegnato tale funzione all'evento onload. Bene, quando l'evento onload viene generato, la funzione expand non riceve di certo un 'id'. Sebbene questo non dia problemi (infatti getElementById dovrebbe ritornare null), ha poco senso (almeno secondo me) che tu usi questa tua funzione come event-handler.
Tutto qui quello che volevo dire!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 22-02-2007, 21:06   #6
Isomarcus
Senior Member
 
L'Avatar di Isomarcus
 
Iscritto dal: Mar 2003
Messaggi: 5199
ah ok. sì cmq quello che volevo fargli fare all'onload era semplicemente chiudere tutti i submenu aperti, infatti arrivandogli un id nullo la parte dell'espansione viene semplicemente ignorata

cmq ritornando alla domanda iniziale, qualche idea su come posso richiudere i submenu una volta aperti?
Isomarcus è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2007, 16:41   #7
Isomarcus
Senior Member
 
L'Avatar di Isomarcus
 
Iscritto dal: Mar 2003
Messaggi: 5199
up
Isomarcus è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2007, 16:18   #8
Isomarcus
Senior Member
 
L'Avatar di Isomarcus
 
Iscritto dal: Mar 2003
Messaggi: 5199
up
Isomarcus è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2007, 15:13   #9
Isomarcus
Senior Member
 
L'Avatar di Isomarcus
 
Iscritto dal: Mar 2003
Messaggi: 5199
up
Isomarcus è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati Oracle AI World 2025: l'IA cambia tutto, a parti...
Micron e millisecondi: la piattaforma ServiceNow guida l'infrastruttura IT di Aston Martin F1 Micron e millisecondi: la piattaforma ServiceNow...
ASUS GeForce RTX 5080 Noctua OC Edition: una custom fenomenale, ma anche enorme ASUS GeForce RTX 5080 Noctua OC Edition: una cus...
Un post di Sean Duffy (amministratore ad...
SpaceX ha già lanciato oltre 135 ...
GeForce RTX 5060 Ti 8GB: non piace neanc...
Isar Aerospace Spectrum: il fallimento d...
'State lontani dalla GeForce RTX 5090 Fo...
GJ 251 c è la ''super-Terra'' sco...
Halo è ufficialmente multipiattaf...
Windows 11 25H2 e 24H2: come attivare su...
Brembo Solutions e Microsoft danno vita ...
Migliaia di pacchi Amazon rubati ai legi...
Ex CEO di Stellantis: Musk lascerà...
Record storico per i giochi Windows su L...
GPU introvabili: Microsoft accusa i mine...
RedTiger prende di mira i gamer: furto d...
Microsoft sotto accusa: avrebbe nascosto...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:17.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v