user2953222
user2953222

Reputation:

Should I use .innerHTML or .value for <textarea>?

This is a follow-up of Does this not work because I can't use a script in a div?

Where I left off, I had this code:
Button script:

<script>
    var correctProperty = "value";
    function run(){
        document.getElementsByTagName("head")["0"].innerHTML += eval(document.getElementById("editorHead")[correctProperty]);
        document.getElementById("result").innerHTML = eval(document.getElementById("editorBody")[correctProperty]);
    }
</script>

The textareas (without class and style attributes & in between non-div text):

<textarea id="editorHead" rows="20"></textarea>
<textarea id="editorBody" rows="20"></textarea>
<div id="result"></div>

Currently this doesn't work, and one of my answers from before (the accepted one) said that correctProperty should be set to "innerHTML". So should it? Or is the problem an interference with window (like before)? Or, ... should I put it in a form and then use "value"?

Upvotes: 5

Views: 15013

Answers (3)

Adeel Raza Azeemi
Adeel Raza Azeemi

Reputation: 813

Javascript innerHTML does update the text in textarea but it doesn't show yours changes in the browser window; if you use it for the second time. for example, If you had some button that updates the text in textarea; this button would insert text for the first time but on second time although it would insert text in textarea (as can be proved by firebug or chrome developer tool) but this would not be shown in browser window. Instead if you use value this would be shown in browser (I had test it in chrome and firefox).

So I think you should use .value

Upvotes: 5

Grimnoff
Grimnoff

Reputation: 486

No idea why you are using eval... below is corrected.. outside of that not sure what you are trying to accomplish. Both value and innerHTML will pull from textareas, the question is what you want only text in the return or possible HTML values.

function run(){
    document.getElementsByTagName("html")[0].innerHTML += document.getElementById("editorHead").innerHTML;
    document.getElementById("result").innerHTML = document.getElementById("editorBody").innerHTML;
}

Upvotes: -1

Pointy
Pointy

Reputation: 413826

You access and update the value of a textarea element through the "value" property.

Try:

 var theValue = document.getElementById("editorHead").value;

Updating the <html> element doesn't make much sense.

Upvotes: 3

Related Questions