CandlesMan: Parentnode ermitteln

Hallo Forum,

ich habe da ein Problem und bitte ich euch um Unterstützung.
Ich arbeite momentan an einem Thema mit oop-Javascript. Es ist so, dass ich so etwas wie unten habe:

  
<table id="myParnet1" class="text" border="0">  
   <tr>  
     <td>  
       <table id="inputs" height=30 class="text" border="0" >  
         <tr>  
 	   <td width="90">Name</td>  
	   <td width="53" colspan=2>1</td>  
	 </tr>  
	 <tr>  
	   <td id="11"><input id="20" type="text" onfocus="myMethod(this)"/></td>  
	   <td id="12"><input id="21" type="text" onfocus="myMethod(this)"/></td>  
           ...  
 	 </tr>  
       </table>  
     </td>  
   </tr>  
 </table>  

Dieser Teil wird zur Laufzeit mehrmals mit 'cloneNode' geklont und unten eingefügt. Mein Problem an dieser Stelle ist, dass ich diese Teile hinterher nicht mehr auseinander halten kann. Dies ist notwendig, damit ich richtig auf die inhalte von 'inputs' (hier mit id 11 und 12, ...) reagieren kann.

Beim kopieren ändere ich die Tabelen-ID 'myParent1' fortlaufend, wie z.B. 'myParent2', 'myParent3', ... Aus diesem Grund habe ich mir gedacht, vielleich kann ich so die Eingabefelder identifizieren. Meine frage ist nun, wie ich an die Tabellen-ID 'myParnet1' kommen kann, wenn ich in die Eingabefelder mit ids 11 und 12 klicke. Das ganze mit Klonen wird jedesmal als ein Object in einem Array abgelegt.

Ich bedank mich im Voraus.

  1. hi,

    Beim kopieren ändere ich die Tabelen-ID 'myParent1' fortlaufend, wie z.B. 'myParent2', 'myParent3'

    Du könntest doch bei diesen Tabellen, wenn sie geklont wurde, mit getElementByTagName("input") die beiden Inputfelder rausfischen und dann deren ID fortlaufend hochsetzen. 30,31 - 40,42 - 50,51 etc. ...; ???

    mfg

    tami

  2. Hallo CandlesMan,

    IDs müssen dokumentenweit eindeutig sein. Nach dem Clonen der Tabellen musst du also die IDs ändern.

    Gruß, Jürgen

  3. Hallo,

      
    
    > <table id="myParnet1" class="text" border="0">  
    >    <tr>  
    >      <td>  
    >        <table id="inputs" height=30 class="text" border="0" >  
    
    

    Hier musst du die ID ebenfalls fortlaufend ändern (inputs1, inputs2,...).
    Außerdem ist eine ID hier nicht erdorderlich. Du kannst auf diese Tabelle mit
    document.getElementById('myParnet1').getElementsByTagName('table')[0] zugreifen.

      
    
    >          <tr>  
    >  	   <td width="90">Name</td>  
    > 	   <td width="53" colspan=2>1</td>  
    > 	 </tr>  
    
    

    Diese Breiten-Angaben gehören ins CSS.

      
    
    > 	 <tr>  
    > 	   <td id="11"><input id="20" type="text" onfocus="myMethod(this)"/></td>  
    > 	   <td id="12"><input id="21" type="text" onfocus="myMethod(this)"/></td>  
    
    

    1. IDs dürfen nicht mit einer Zahl beginnen.
    2. Du musst auch hier die IDs fortlaufend vergeben, d.h. nach dem klonen ändern.
    3. Du brauchst dabei entweder die IDs der Tabellenzelle oder die IDs der Eingabefelder(besser). Beide sind nicht notwendig.

    Beim kopieren ändere ich die Tabelen-ID 'myParent1' fortlaufend, wie z.B. 'myParent2', 'myParent3', ... Aus diesem Grund habe ich mir gedacht, vielleich kann ich so die Eingabefelder identifizieren. Meine frage ist nun, wie ich an die Tabellen-ID 'myParnet1' kommen kann, wenn ich in die Eingabefelder mit ids 11 und 12 klicke. Das ganze mit Klonen wird jedesmal als ein Object in einem Array abgelegt.

    Du bastelst dir eine Funktion, die sich mit parentNode durchs DOM nach oben hangelt - und zwar solange, bis du bei einem Tabellenelement angelangt bist, dessen ID mit 'myParnet' beginnt.

    vg ichbinich

    --
    Kleiner Tipp:
    Tofu schmeckt am besten, wenn man es kurz vor dem Servieren durch ein saftiges Steak ersetzt...