bble: dynamic textarea

Beitrag lesen

Hallo,

ich habe vor ner weile mal angefangen ne dymaische Textbox zu realisieren, diese soll automatisch die Rows-anzahl anpassen je nachdem wieviel Inhalt angezeigt werden soll.

Zunächste versuchte ich es über die splittung mittels \n aber das funktioniert nicht weil da immer nur 1 raus kam, nur wenn ich die umbrüche selbst in Javascript gefüllt hatte ging das, aber das funzt leider so nicht.
Dann wollte ich es über das scrollen machen, denn der Browser weiss ja schon irgendwie das es jetzt zu viel Inhalt wird, also zeigt er den scrollbalken an, wenn ich da rankommen würde könnte ich anstatt dem scrollbalken eine row mehr anzeigen, wegnehmen ner row, analog. Aber da wird man wohl nicht rankommen, oder?

Darum nun mein Ansatz 3:
Ich hol mir aus dem value alle einzelnen Wörter, gekennzeichnet durch ein Leerzeichen " ", laufe alle diese durch und füge sie dem neuen Content solange hinzu solange es kleiner den cols ist, falls es größer ist wird ein \n eingefügt und eine neue row, am ende bau ich das dann alles in die textarea ein. Bei mir springt er aber schon nicht in die WHILE-Loop, hat jemand ne Ahnung was ich falsch machen könnte?
Bin ich schon so Betriebsblind das ich das jetzt nicht mehr sehe?

Geht das prinzipiell überhaupt?????????????

DANKE FÜR ALLE ANREGUNGEN!!!!

Der Code enthält noch einigen DEBUG-Mist, sorry dafür, aber vielleicht hilft es euch mir zu helfen :-)

Vielen Dank schon im Vorraus! Und liebe Grüße

bble

------------ Code -------------

<HTML>
<HEAD><TITLE>Textarea dynamisch Größe verändern!</TITLE>
<script language="JavaScript" type="text/javascript">
function getRows()
{
 alert("los gehts");
 var textarea = document.getElementById("myTa");
 var cols = textarea.cols;
 var content = textarea.value.split(" ");
 var neuContent = "";
 Div = document.getElementById("blub");

var last = 0;
 var rowsNumber = 0;

while(last <= content.length) {
  alert("content length: " + content.length + "last: " +last);

neuContent = neuContent + content[last];

if ((last +1) <= content.length) {

while((content[last].length + content[last + 1].length ) <= cols) {

neuContent = neuContent + " " + content[last+1]  ;
    Div.innerHTML =  "neuer Content: \n"  + neuContent;
    last++;

}
   alert("Wieder eine Zeile fertig!");
   neuContent = neuContent + "\n";
   rowsNumber++;
   Div.innerHTML =  "neuer Content: \n"  + neuContent + "\n  rows anzahl: " + rowsNumber;
   last++;
  }

}
 alert("Neu Content ist: "+ neuContent);
 textarea.value = neuContent;
 textarea.rows = rowsNumber;
 Div.innerHTML =  "neuer Content: \n"  + neuContent;
}

</script>
</HEAD>
<BODY>

<textarea id=myTa cols=20 rows=1>Peter trifft sich bei Freunden und trinkt ein Bier!</textarea>
<input type=button value="get rows" onClick="getRows();">

<p>
<div id="blub">Inhalt wird ausgetauscht...</div>
</p>

</BODY>
</HTML>