2010-12-19 9 views
1

JSを使用して作成されたオブジェクトの子の子を削除できません。子を子から削除する

基本的に私がコメントオブジェクトを作成すると、appendChild(replyBox)がそれに追加されます。 replyBox内には、replyBoxを完全に削除するはずのキャンセルボタンがあります。ここで

はコードです:cancelがある

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という名前のオブジェクトと、同じ名前の関数があります。名前を変更してみてください。

+0

これはありがとうございました...私はこれに多くの時間を費やしました...私は2つの異なるもののために同じ名前を持っていた秒を忘れました。 – twidizle

0

は、私がここでの問題を参照してください。あなたはcommentにコメント要素のすべてのIDを設定している場合は

comment.id = "comment"; 

を、DOMが混乱することができます。

関連する問題