只有.remove()工作而不是removeChildren()

时间:2014-06-06 20:49:17

标签: javascript removechild

所以我试图在纯JavaScript中创建一个类似CRUD的基本应用程序,所以请不要回答jQuery。

拥有一个数据库,所有人都会来,我是新手,所以我将它作为一种学习工具。

问题是:我正在尝试使用输入和两个按钮创建新行。一个用于删除它自己的行,另一个用于“保存”写入输入的文本。

问题是,当我使用this.parentNode.parentNode.remove();是有效的,但由于这是相当新的,尚未完全支持,特别是IE我想使用removeChild方法,但我不能修正它。请有人帮帮我吗?

提前致谢。

以下是脚本代码,以便您可以查看是否有任何错误(删除功能在最后):

var $ = function (elem) {
    return document.getElementById(elem);
}
var _ = function (elem) {
    return document.getElementsByClassName(elem);
}

$("btnAdd").addEventListener("click", Add, true); 

function Add() {
var saveElements = _("btnSave");
var deleteElements = _("btnDelete");

nodeElement = document.createElement("tr");
nodeElement.innerHTML = "<td><input type='text'/></td>"+ 
                        "<td><input type='text'/></td>"+ 
                        "<td><input type='text'/></td>"+ 
                        "<td><button class='btnSave btn blue'>S</button><button class='btnDelete btn red'>D</button></td>";
    $("newElement").appendChild(nodeElement);

    for (var i = 0; i < saveElements.length; i++) {
        saveElements[i].addEventListener("click", Save, true);
    }

    for (var i = 0; i < deleteElements.length; i++) {
        deleteElements[i].addEventListener("click", Delete, true);
    }
}
function Save() { }

function Delete() {
    this.parentNode.parentNode.remove();
}

1 个答案:

答案 0 :(得分:0)

要使用removeChild删除元素,必须选择父元素然后将要删除的元素传递给removeChild

this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);

这会删除this.parentNode.parentNode

this.parentNode.parentNode.removeChild(this)无效,因为this不是this.parentNode.parentNode

的孩子