You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript使用cloneNode克隆表单时如何清除文本框已有内容

问题原因

cloneNode(true)会完整克隆节点的当前状态,包括表单元素用户输入后的实时value值,之前的方案失效有两个原因:一是直接用getElementById会命中原节点的元素(克隆后ID重复,DOM默认返回第一个匹配元素),二是childNodes只遍历直接子节点,不会递归查找深层嵌套的表单元素。

修改后的完整代码

var counter = 0;
function moreField() {
    counter++;
    var newFields = document.getElementById('readroot').cloneNode(true);
    newFields.id = '';
    newFields.style.display = 'block';
    var newField = newFields.childNodes;
    for (var i = 0; i < newField.length; i++) {
        var theName = newField[i].name
        if (theName)
            newField[i].name = theName + counter;
    }

    // 新增清空逻辑:在新克隆的节点范围内查找所有文本输入框、文本域
    var inputs = newFields.querySelectorAll('input[type="text"], textarea');
    inputs.forEach(function(el) {
        el.value = '';
    });

    var insertHere = document.getElementById('writeroot');
    insertHere.parentNode.insertBefore(newFields, insertHere);
}

额外说明

如果后续还需要支持清空其他表单元素,可以在querySelectorAll的选择器里追加对应规则,比如要清空单选框可以加, input[type="radio"],清空下拉框可以加, select,再对应写赋值逻辑即可。


内容的提问来源于stack exchange,提问作者Mattr42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:57:04