使用JavaScript修改子节点中的输入名称

时间:2018-05-24 23:43:48

标签: javascript html dom

我需要帮助扩展此JavaScript(借鉴https://www.quirksmode.org/dom/domform.html):

var appCounter = 0;
function anotherApp() {
    appCounter = appCounter + 1;
var newAppField = document.getElementById("keyApp").cloneNode(true);
    newAppField.id = '';
    newAppField.style.display = 'block';
    var newApp = newAppField.childNodes;
        for (var i = 0; i < newApp.length; i++) {
        var theName = newApp[i].name
        if (theName) {
    newApp[i].name = theName + appCounter;
        }
    }
    var insertApp = document.getElementById('keyApp');
    insertApp.parentNode.insertBefore(newAppField, insertApp);

    document.getElementById('appCount').value = appCounter
}

当我的表单中的元素是:

时,这很好用
<div id="keyApp" style="display:none">
    <input type="text" name="application" id="application">
    <input type="text" name="usage" id="usage">
<\div>

但是当我在输入中添加div时(引导样式的原因)我无法更新输入名称:

<div id="keyApp" style="display:none">
    <div class="col-md-2">
        <input type="text" name="application" id="application">
    </div>
    <div class="col-md-2">
        <input type="text" name="usage" id="usage">
    </div>
<\div>

如何扩展脚本以修改这些新div中的输入名称?

1 个答案:

答案 0 :(得分:0)

由于现在有另一个图层,您需要现在获取newApp[i].childNodes[0]以获取实际的输入元素。

newApp现在包含带有div样式的col-md-2元素列表,您需要让这些div元素中的子元素进入。