27. juli 2009 - 17:59Der er
4 kommentarer og 1 løsning
problemer med opdatering af et textarea.
Hej eksperter. Efter ca 1 time med javascript er jeg stødt i et problem jeg ikke helt forstår hvorfor ikke virker..
Jeg har et textarea: <textarea name="indhold" rows="10" cols="80" id="indhold"></textarea>
dette vil jeg så gerne kunne opdateret med en javescriptfunktion:
<script type="text/javascript"> function addcode(kode) { document.getElementById("indhold").innerHTML += kode; } </script>
denne funktion kalder jeg med en onclick fra et en række andre elementer fx: onclick=addcode("TEST")
Hvis jeg så trykker på elementet kommer der også korrekt nok TEST ind i textarea.. og trykker jeg flere gange kommer det også korrekt flere gange efter hinanden. Hvis jeg imidlertid selv har skrevet noget i textarea virker funktionen ikke mere(textarea bliver ihvertfald ikke opdateret).
Jeg prøvede så i min fejlfinding at smide en "alert(document.getElementById("indhold").innerHTML);" ind i min funktion. Og den bliver opdateret hver gang med TEST efter hinanden. Her er teksten brugeren har skrevet dog ikke med?
Så hvad jeg ikke forstår er: 1: Hvad går galt så funktionen ikke gør hvad jeg umiddelbart havde i tanker? 2: Hvordan kan det være at opdateringen kun går godt indtil brugeren har skrevet noget i feltet men ikke bagefter(selv hvis brugeren sletter alt han har skrevet) 3: Hvordan kan det være der er forskel på indholdet i textarea og alertbeskeden?
Håber i kan hjælpe mig med dette spørgsmål.
(bruger Firefox som browser hvis det har betydning)
Som fant0mas skrev, er det value property'en på objektet, du skal sætte. For sjov kan du prøve at se, hvor forskellige resultater, du får ud af andre metoder (test mindst i IE, FF og Opera):
<script type="text/javascript"> var oTxt = document.getElementById("fooBar"); function myAlert(sStr) { alert(sStr+"\n\nvalue: "+oTxt.value+"\ninnerHTML: "+oTxt.innerHTML+"\nfirstChild.nodeValue: "+oTxt.firstChild.nodeValue+"\ngetAttribute('value'): "+oTxt.getAttribute('value')); } function foo() { myAlert("Inden indsættelser:");
oTxt.value = "noget"; myAlert("Indsat med value:");
oTxt.firstChild.nodeValue += " - og noget mere"; myAlert("Indsat med firstChild.nodeValue:");
oTxt.innerHTML += " - og noget tredie"; myAlert("Indsat med innerHTML:");
oTxt.setAttribute("value" , oTxt.getAttribute("value")+" - og noget fjerde"); myAlert("Indsat med getAttribute/setAttribute:"); } </script>
- og så har innerHTML i øvrigt aldrig været del af nogen standard ;o)
/mvh </bole>
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.