Search code examples
javascriptjqueryclonenode

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.


Solution

  • 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>