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 回答