使用js / jQuery从表单中删除动态创建的子节点?

时间:2010-08-12 23:25:33

标签: javascript jquery forms paypal

以下帖子对我正在尝试做的事情非常有帮助: Builing a cart with multiple items and the PayPal button in PHP

这部分很有效:

    var inp1 = document.createElement("input");
    inp1.setAttribute("type", "hidden");
    inp1.setAttribute("id", "item_number_" + current_item);
    inp1.setAttribute("name", "item_number_" + current_item);
    inp1.setAttribute("value", current_item);

    document.getElementById("paypal-form").appendChild(inp1);

但是我在如何在需要时删除项目时遇到了一些困难......我正在寻找类似的东西:

    document.getElementById('payPalForm').removeChild(inp1);

但显然我需要一种方法来指定/跟踪那些动态创建的id ...或者是否有一种我更容易丢失的方式?

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

使用parentNode属性检索元素的父元素,并使用父元素的removeChild方法:

inp1.parentNode.removeChild (inp1);

参考: parentNode property

答案 1 :(得分:0)

我不确定这段代码属于哪里,但将它封装在一个类中会很有帮助。

function NewClass() {
    var formPP = document.getElementById('payPalForm');
    var lInputs = [];
    this.addItem = function(val) {
        var inp1 = document.createElement("input");
        inp1.setAttribute("type", "hidden");
        inp1.setAttribute("id", "item_number_" + val);
        inp1.setAttribute("name", "item_number_" + val);
        inp1.setAttribute("value", val);
        formPP.appendChild(inp1);
        lInputs.push(inp1);
    }
    this.removeItem = function(val) {
        var e = formPP.firstChild;
        while( e ) {
            var eNext = e.nextSibling;
            if( e.value == val )
                formPP.removeChild(e);
            e = eNext;
        }
    }
}

你必须根据自己的需要量身定制,但希望这能为你提供一个开始。