javascript - 从 child 身上移走 child

标签 javascript removechild

我无法删除使用 JS 创建的对象的子对象的子对象。

基本上,一旦我创建了一个评论对象,我就会将 appendChild(replyBox) 添加到它。在 replyBox 里面有一个取消按钮,它应该完全删除 replyBox。

代码如下:

 function Comment(message){
    var self = this;
    var message = message;

    var comment = document.createElement("li");
    comment.id = "comment";
    comment.style = "display: none;";
    comment.textContent = message;

    createButtons(comment);

    var parent = document.getElementById("wall");
    parent.appendChild(comment);
    return comment;
}
function deleteComment(comment){
    var parent = document.getElementById("wall");
    parent.removeChild(comment);
}

function newReply(comment){
    var buttons = comment.getElementsByTagName("input");
    buttons.item(0).disabled="disabled";

    var replyBox = document.createElement("div");
    replyBox.id="replyBox";

    var replyTxt = document.createElement("input");
    replyTxt.type="text";
    replyTxt.value="Write a reply";
    replyTxt.onfocus = "if(this.value==this.defaultValue) this.value='';" ;
    replyTxt.onblur="if(this.value=='') this.value=this.defaultValue;";
    replyBox.appendChild(replyTxt);

    createButtons(replyBox);

    comment.appendChild(replyBox);  
}
function createButtons(parent){
    var button = document.createElement("input");
    button.type = "submit";
    if(parent.id=="comment"){
        var reply = button.cloneNode();
        reply.value = "reply";
        reply.addEventListener("click", function(){newReply(parent)},false);
        parent.appendChild(reply);

        var deleteBtn = button.cloneNode();
        deleteBtn.value = "delete";
        deleteBtn.addEventListener("click", function(){deleteComment(parent)},false);
        parent.appendChild(deleteBtn);
    }
    else{
        var submitBtn = button.cloneNode();
        submitBtn.value = "submit";
        //reply.addEventListener("click", function(){newReply(parent)},false);
        parent.appendChild(submitBtn);

        var cancel = button.cloneNode();
        cancel.value = "cancel";
        cancel.addEventListener("click", function(){cancel(parent)},false);
        parent.appendChild(cancel);
    }
}

function cancel(replyBox){
    replyBox.parentNode.removeChild(replyBox);
}

最佳答案

   cancel.addEventListener("click", function(){cancel(parent)},false);

哪个取消是哪个?您有一个名为 cancel 的对象以及一个同名的函数。尝试重命名一个。

关于javascript - 从 child 身上移走 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4481832/

相关文章:

Javascript fadeIn div 标签点击失败

javascript - Angular Directive(指令)监视变量未触发

iphone - Cocos2D removeChildByTag 崩溃?

Javascript - 如何使用点击事件和类删除 DOM 元素?

javascript - 删除div节点的子节点

javascript - JavaScript getter 方法的意义何在?

javascript - 我如何将参数从 scala 传递给 javascript 元素?

javascript - jQuery 选择器在 IE7/8 中不起作用

android - 删除 RecyclerView 中的项目 - Android

javascript - 恢复使用parentNode.removeChild删除的项目