fips123
fips123

Reputation: 281

How to clone textareas with cloneNode?

I have 2 tables, and with a button I want to clone the content from tb_new to tb_made:

var tab = document.getElementById('tb_new');
var clone=tab.getElementsByTagName('tr')[1].cloneNode(true);
var table = document.getElementById("tb_made"); 
table.appendChild(clone);

Everything is cloned fine, except one cell with a textarea. How can I fix that?

Fiddle is here.

Upvotes: 1

Views: 406

Answers (1)

Johan Karlsson
Johan Karlsson

Reputation: 6476

Writing in a <textarea> will only update its value, not its content.

To solve the issue you can do something like this:

function add() {
    var tab = document.getElementById('tb_new');
    var textAreas = tab.getElementsByTagName("textarea");

    for (var i = 0; i < textAreas.length; ++i) {
        textAreas[i].innerHTML = textAreas[i].value;
    }

    var clone = tab.getElementsByTagName('tr')[0].cloneNode(true);
    var table = document.getElementById('tb_made');
    table.appendChild(clone);
}
<table id="tb_new">
    <tr>
        <td>
            <textarea>Test</textarea>
        </td>
        <td>
            <input>
        </td>
    </tr>
</table>
<input type="button" value="add" onClick="add()">
<table id="tb_made">
    <tr>
        <td></td>
    </tr>
</table>

Upvotes: 3

Related Questions