Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    79

    DOM, Javascript e tags <fieldset>

    Ho il seguente codice HTML:

    <form id="registration" action="/cgi-bin/registration.cgi" method="POST" onsubmit="return control()">
    <fieldset>
    <legend>Legend 1</legend>
    <label>......</label> <input ..../>

    <label>......</label> <input ....onclick="return orgreg()"/>

    </fieldset>
    <fieldset>
    <legend>Legend 2</legend>
    <label>......</label> <input ..../>

    <label>......</label> <input ..../>

    <label>......</label> <input ..../>

    <label>......</label> <input ..../>

    <label>......</label> <input ..../>

    </fieldset>
    ........
    ........
    e il seguente codice javascript:
    function orgreg() {

    if (document.getElementById) {
    alert(document.getElementById("registration").firs tChild);
    }

    }
    L'output di questa finestra di alert è:[Object Text]
    Ora il primo figlio si riferisce al primo tag fieldset, giusto? ...e non al tag legend?
    [/QUOTE]

  2. #2
    devi considerare gli spazi anche. Metti di avere l'html:
    codice:
    <div>
       
    
    Uno</p>
       
    
    Due</p>
    </div>
    il codice nell'albero DOM risultante sarà:
    codice:
    [ElementNode DIV value=""]
      |---[TextNode value="\n"]
      |---[TextNode value=" "]
      |---[ElementNode P value=""]
         |---[TextNode value = "Uno"]
      |---[TextNode value="\n"]
      |---[ElementNode P value=""]
         |---[TextNode value = "Due"]
      |---[TextNode value="\n"]
    Come vedi gli spazi e gli a capo sono sempre indicati tra i sibling del DOM. Il modo migliore per ricercare all'interno di un albero DOM determinati nodi e quello di elencare ricorsivamente i nodi nei diversi elementi.

    Ti scrivo una funzione veloce che prende in ingresso alcuni parametri:
    codice:
    //Questa funzione prende in ingresso un elemento, il tag degli elementi da cercare e ritorna l'array con tutti gli elementi che hanno quel tag
    function ElementScan(elem, tagName){
       var elems = [];
       if(elem.nodeType == 1){ //È un elemento
          if(elem.tagName.toUpperCase() == tagName.toUpperCase())
              elems.push(elem);
          //Questo è importante: è il ciclo for su tutti i nodi contenuti nell'elemento
          for(var c = elem.firstChild; c != null; c = c.nextSibling){
              elems = elems.concat(ElementScan(c, tagName));
          }
       }
       return elems;
    }
    Nel tuo caso, chiami la funzione così:
    codice:
    var myFieldsets = ElementScan(document.getElementById("registration"), "fieldset");
    nell'array myFieldsets avrai tutti gli elementi fieldset dell'HTML risultante.
    I DON'T Double Click!

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.