Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    90

    modifiche a childNodes perse dopo insertBefore

    Salve, penso il mio problema sia molto semplice, ma dopo averci perso troppo tempo mi rivolgo al forum per un aiuto.

    Ho creato un form che aggiunge campi a seconda di quanto desidera l'utente: il codice HTML è semplicemente

    codice:
    <div id="readroot" style="display: none">
        <input type="text" value="test" id="name" name="name">
    </div>
       
    <form method="post" action="index.php">
    	              
        <span id="writeroot"></span>
    
        Aggiungi record
        <input type="submit" value="Conferma" />
    
    </form>
    mentre il codice Javascript non dovrebbe far altro (in teoria) che copiare il codice html contenuto nel div readroot e copiarlo subito prima dello span writeroot. Questo è il codice

    codice:
    <script type="text/javascript">
            var counter = 0;
            window.onload = moreFields();
    
            function moreFields() {
    	  counter++;
    	  var newFields = document.getElementById('readroot').cloneNode(true);
    	  newFields.id = 'baba';
    	  newFields.style.display = 'block';
        	  var newField = newFields.childNodes;
    	  for (var i=0;i<newField.length;i++) {
                  var theName = newField[i].name;
    	      if (theName)
    	          newField[i].name = theName + counter;
    		  newField[i].onclick = alert(this.name);
    	        }
    	    var insertHere = document.getElementById('writeroot');
    	    inserted = insertHere.parentNode.insertBefore(newFields,insertHere);
            }
    </script>
    Viene tutto copiato regolarmente... Quello che succede, però, è che nè l'evento onclick che ho messo lì apposta per controllare ne il campo "name" di nessuno dei nodi figli viene effettivamente modificato!!!!
    Perchè succede questa cosa?!

    Non sono espertissimo di Javascript e mi è venuto il dubbio che i valori vengano modificati solo all'interno della funzione per poi essere "dimenticati" appena fuori da essa, ma non sono riuscito a trovare evidenza di questo fatto
    Se hai paura di chiedere, vuol dire che ti vergogni ad imparare...

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Premesso che non ho controllato la funzione, e che ad essere sincero c'ho capito il giusto su cosa devi fare.
    Ma... potrebbe non andare perché il div readroot è impostato su display none cioè nascosto (anche per la funzione) pertanto non trovando l'oggetto nel documento e tutti i nodi in esso contenuti va in errore, potresti provare a togliere (momentaneamente come test) il display:none da div in questione, se dovesse funzionare almeno hai capito dove il problema, altrimenti non saprei
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.