Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Appendere oggetti via DOM invece di innerHTML

    Ciao,
    ho una funzione che crea e restituisce una collezione di oggetti:

    codice:
    function ciao() {
    	var container = document.createElement('div');
    
    	var uno = document.createElement('p');
    	var due = document.createElement('div');
    	
    	container.appendChild(uno);
    	container.appendChild(due);
    	
    	return container.innerHTML;
    }
    Un'altra funzione appende ad un nodo gli oggetti restituiti dalla prima:

    codice:
    function ciccio() {
    	document.getElementById('pippo').innerHTML += ciao();
    }
    Entrambe le funzioni usano la proprietà innerHTML, io invece vorrei usare una soluzione di DOM puro.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    da ciao() ritorna solo container
    e ciccio() diventa
    document.getElementById('pippo').appendChild(ciao( ));
    no?

  3. #3
    Originariamente inviato da Xinod
    da ciao() ritorna solo container
    e ciccio() diventa
    document.getElementById('pippo').appendChild(ciao( ));
    no?

    Non posso farlo, la situazione reale è più complessa perché si tratta di un parser XML.
    Il documento XML deve rispettare delle regole strutturali e con quel metodo avrei un oggetto e un annidamento in più.

    Poi i vari metodi non accederebbero ai target corretti...
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  4. #4
    Puoi fare in modo che la funzione ciao restituisca un array con tuti gli elementi creati.
    La funzione ciccio invece dovrà ciclare l'array restituito e appendere tutti gli elementi a pippo, ovviamente utillizando per ogni elemento il metodo cloneNode.

  5. #5
    Originariamente inviato da Mega69
    Puoi fare in modo che la funzione ciao restituisca un array con tuti gli elementi creati.
    La funzione ciccio invece dovrà ciclare l'array restituito e appendere tutti gli elementi a pippo, ovviamente utillizando per ogni elemento il metodo cloneNode.
    :|

    Avevo già pensato ad un ciclo, ma speravo ci fosse qualcosa di più lineare, simile ad innerHTML.

    Perché childNodes non lavora in questo modo, su un oggetto DOM appositamente preparato?
    Le specifiche W3C dicono che questa proprietà restituisce i nodi figli come collezione di oggetti, e sarebbe proprio il caso che questa proprietà lo facesse.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  6. #6
    Personalmente credo che non sia compito dei browser fornire metodi o proprietà in scrittura per fare cose del genere;
    Ma se anche fosse possibile fare una cosa del genere:
    codice:
    obj1.childNodes = obj2.childNodes;
    durante l'assegnazione gli elementi non verrebbero di certo clonati.
    Non so se tale istruzione si possa "rendere funzionante" con un defineSetter, ma tanto vale a questo punto crearsi una normale funzione.

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.