0
var counter = 0;

function moreFields() {
     counter++;
     var newFields = document.getElementById("input").cloneNode(true);
     newFields.id = counter;
     newFields.style.display = 'block';
     var newField = newFields.childNodes;
     for (var i=0;i<newField.length;i++) {
         var theName = newField[i].id;
         if (theName) {
             newField[i].id = theName + counter;
            }
        }
     var insertHere = document.getElementById("buttons");
     insertHere.parentNode.insertBefore(newFields,insertHere);
}

function clearData() {
     var pricetxt = document.getElementById('price1');
     pricetxt.value = "";
     var qtytxt = document.getElementById('qty1');
     qtytxt.value = "";
     while (counter > 0) {
         var cell = document.getElementById("input"+counter);
         cell.parentNode.parentNode.removeChild(cell.parentNode)
         counter--;
        }
     counter = 1;
}

window.onload = moreFields;

JSFiddle

ボタンが押されたときに最初の関数によって動的に作成されたすべてのクローンを削除したいと思います。これを使用して、スクリプトのベースを作成しました。私は簡単な方法(彼らのやり方)を取ることができることを知っていますが、私はこの方法でそれを行う方法を学びたいと思っています.

すべての答えは大歓迎です!

4

1 に答える 1

0

カウンターがあるので、カウンター値までのすべてのノードを削除してからリセットします。

function startOver() {
    var element;
    for (var i = 1; i <= counter; i += 1) {
        element = document.getElementById(i);
        if (element.parentNode) {
            element.parentNode.removeChild(element);
        }
    }
    counter = 0;
    moreFields();
}

デモ: http: //jsfiddle.net/AXUbP/1/

于 2013-01-07T01:18:27.663 に答える