2010-12-19 271 views
1

我无法移除使用JS创建的对象的孩子的孩子。将孩子从孩子中移除

基本上一旦我创建一个评论对象,我appendChild(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); 
} 

回答

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

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

+0

大声笑谢谢你......我在这花了太多时间......我忘了一秒钟,我有两个不同的东西同名。 – twidizle 2010-12-19 06:17:27

0

我看到这里有一个问题:

comment.id = "comment"; 

如果你设置comment元素的所有ID,以comment的DOM可以感到困惑。