bugfix> javascript > 投稿

この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 件
  • 別のレイヤーがあるため、 newApp[i].childNodes[0] を取得する必要があります  ここで、実際の入力要素を取得します。

    newApp  現在、 div のリストを保持しています   col-md-2 を持つ要素  スタイリング、そしてあなたはこれらの div の中に子供たちを取得する必要があります  要素。

あなたの答え