globe: Fokus auf dynamisch erstelltes Eingabefeld

Beitrag lesen

n'abend,

editHandle=document.createElement("input");
   // (... Diverse Eigenschaftsänderungen), darunter auch
   editHandle.id="id_des_neuen_inputs";
   cHandle.appendChild(editHandle);
   // editHandle.focus();
   document.getElementById('id_des_neuen_inputs').focus();

  
MythBuster der Stunde:  
  
`document.createElement('p')`{:.language-javascript} liefert eine Referenz auf das erstellte Objekt, nicht das Objekt selbst.  
  
`document.getElementById('eineID')`{:.language-javascript}, sowie alle anderen getElement\* Funktionen, liefert eine Referenz auf das gesuchte Objekt, nicht das Objekt selbst.  
  
~~~javascript
  
// wir erstellen ein Objekt  
var theBody = document.getElementsByTagName( 'body' )[0];  
var newElement = document.createElement( 'p' );  
    newElement.id = 'newID';  
theBody.appendChild( newElement );  
  
// wir holen uns das Objekt  
var theElement = document.getElementById( 'newID' );  
  
/*  
 * hier haben wir nun 2 Referenzen auf das selbe Objekt.  
 * newElement ist die Referenz, die wir beim Erstellen bekommen haben  
 * theElement ist die Referenz, die wir durch getElementById() bekommen haben.  
 * beide verweisen auf das gleiche Objekt  
 * beide Referenzen haben die gleiche Gültigkeit  
 */  

An dieser Stelle ist ein getElement*() also sinnlos, da wir ja bereits eine Referenz auf das Objekt besitzen. JA! diese können wir sogar "speichern". Bspw. in einem Array - um uns später die Hangelei durch den DOM-Tree zu ersparen.

weiterhin schönen abend...

--
wer braucht schon großbuchstaben?
sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|