Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719

    Modificare stile nodo figlio.

    Ciao a tutti,
    Sono ore ormai che provo a risolvere il problema ma non ci riesco.
    In pratica ho questo codice html:

    codice:
    <div class="container" onClick="this.nascosto.style.display = this.nascosto.style.display == 'none' ? '' : 'none';">
    ...
    ...
    ...
    <div class="nascosto" name="nascosto">
    ....
    ....
    ....
    </div>
    </div>
    Che però non mi funziona.
    Come posso risolvere?
    Non posso usare nessun getElementById perchè è un elenco quindi non funzionerebbe.

    Grazie mille,

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    Nessuno?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    43
    forse :

    this.getElementByName('nascosto')[0].style.display

    ... ma niente garanzie, eh

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133

    Re: Modificare stile nodo figlio.

    Originariamente inviato da simo22
    ...
    Che però non mi funziona.
    Non avevo dubbi, senza offesa ma quello che hai scritto non ha senso
    Come posso risolvere?
    ...
    Studiandoti il javascript guida spigarti i motivi sarebbe lungo e complesso
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    un div non ha name e cercare di rilevare un attributo arbitrario nel DOM non da risultati affidabili

    la sintassi che hai provato ad usare e' DOM livello 0, funziona con i form ed i suoi elementi
    (rigorosamente elementi di form: input, textarea, select...)
    <form onsubmit="this.nascosto....">
    ...
    <input name="nascosto" />
    </form>

    non e' questo il caso quindi devi usare il DOM livello 1
    http://javascript.html.it/guide/leggi/24/guida-dom/

    a qualcosa ti devi appoggiare per identificare l' elemento e idealmente vuoi farlo in maniera piu' diretta possibile;
    se non puoi assegnare ad esso un id e se l' elemento puo' essere preceduto da un numero sempre variabile di elementi dello stesso tipo non puoi far altro che ciclare per tutti gli elementi di quel tipo alla ricerca di qualcosa che lo caratterizzi, la classe va bene

    codice:
    function tuaFunzione(padre){
      var figlio=false;
      var tuttiIDiv=padre.getElementsByTagName('div');
      for(var k=0,l=tuttiIDiv.length;k<l;k++){
        if(tuttiIDiv[k].className && tuttiIDiv[k].className=='nascosto'){
          figlio=tuttiIDiv[k];
          break;
        }
      }
      if(figlio){
        // qui fai quello che vuoi fare con l' elemento corretto
      }
    }
    <div class="container" onclick="tuaFunzione(this)">
    ...

    ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719

    Re: Re: Modificare stile nodo figlio.

    Originariamente inviato da cavicchiandrea
    Non avevo dubbi, senza offesa ma quello che hai scritto non ha senso
    Studiandoti il javascript guida spigarti i motivi sarebbe lungo e complesso
    Ho sbagliato sintassi, non è che non lo conosco....
    Avevo provato a fare:

    this.getElementByTagName("div")[5].style.display

    e

    this.getElementByName("nascosto")[5].style.display

    Ma in entrambi i casi non dava l'errore in firefox, ma non funzionava, e continua a non funzionare...

    Poi mi ero messo a fare this.childNodes[6].....
    Ma mi sono perso.

    L'avevo provato a fare sia in funzione che in onClick, stesso risultato. L'unica cosa che mi restava provare era il DOM dei form che comunque non ha funzionato.
    Può essere un problema di firefox?




    EDIT: Scusate, errore mio. Il getElementsByTagName funziona, sbagliavo io a indicare l'index dell'array. Mettevo 3 (numero div) invece di 2.
    Grazie,

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.