Nihtan, der 2.: Will fehlerloses Tutorial verfassen (autom. vergr. Textarea)

Beitrag lesen

hi,
wie ihr vielleicht von meinem letzten Thread wisst, schreibe ich an einer Textarea, die sich automatisch vergrößert.
Da ich im Netz keine bzw. nur gar nicht bis ungenau funktionierende Tutorials gefunden habe und nach einigem Nachjustieren mein Script auch sehr genau geworden ist, dachte ich mir, ich schreib ein Tutorial.
Da ich aber kein vielleicht nicht ganz sauber funktionierendes Script veröffentlichen will, bitte ich euch das Ganze als Experten nochmals durchzusehen; ich hab es zwar auch mehrmals durchgelesen, doch ich habe JS erst diesen Winter gelernt und bin deswegen noch kein Superprofi darin.

Hier mal der JS-Code...:

function addZeile() {  
  var Inhalt = eingabe.value; // In eingabe ist die Textarea gespeichert  
  
  var geteilt = Inhalt.split('\n'); //Jetzt nehme ich mal jeden Absatz  
  var Abstand = 0;  
  var altPos = 0;  
  for(var Zaehler = 0; Zaehler < geteilt.length; Zaehler++) { // Jeder Absatz wird einzeln verarbeitet  
  
    // Da ja, wenn ein Wort zu lang ist, es in die nächste Zeile gerückt wird und der Rest der Zeile leer bleibt, muss der dann leerbleibende Platz auch berechnet werden:  
    var Position = geteilt[Zaehler].indexOf(' ');  
    while(true) {  
      if(parseInt(Position / 60) != parseInt(altPos / 60))  
        Abstand += Math.abs(altPos%60 - 60);  
      altPos = Position;  
      Position++;  
      Position = geteilt[Zaehler].slice(Position).indexOf(' ')+Position; // Es wird nach den nächsten ' ' gesucht und das Ergebnis gleich absolut gemacht.  
      if(Position == altPos) // Wenn es vor dem absolut Machen -1 war, dann wird die Schleife gebrochen.  
        break;  
    }  
    Abstand += Math.abs((geteilt[Zaehler].length-1) % 60 - 60) + geteilt[Zaehler].length-1; // Der Restabstand nach dem Absatz wird berechnet.  
  }  
  
  Abstand = Abstand / 60 * 17 + 28; // durch Zeilenlänge, mal Zeilenhöhe, plus Spatze  
  if(Abstand > 560) // Wenn das Feld zu groß wird, um es zu überblicken (kann man später auch noch mit der innerHeight errechnen)...  
    Abstand = 560; // ... dann bleibt es so.  
  eingabe.style.height = Abstand+'px'; // Da ja die rows-Eigenschaft uneditierbar ist, muss es als Höhe gesetzt werden.  
}

... und hier der HTML-Code:
<textarea name="eingabe" style="width:500px;font-size:14px;" onkeydown="setTimeout('addZeile()',10)">Nihtan, der 2. oder vielleicht auch der 3. (es könnte aber auch der 4. sein) - auf jeden fall Nihtan</textarea>

Danke für jede Antwort.
lg Nihtan