0

this特定の div に対応します。

このコードを使用して祖父母の後にコードを挿入したいのですが、うまくいかないようです:this.parentNode[0].parentNode[0].insertAfter(newrespondform);

必要に応じてさらにコードを提供できますが、デバッグを試みた後、問題はここにあると確信しています。それが機能するようにどのように書くことができますか?祖父母に ID を追加してそのように選択することはできません。

助けてくれてありがとう:)

編集 - ページの読み込み時に読み込まれるコード全体は次のとおりです。

function comrespond(){
    function addresform(){
    var resid = this.getAttribute('id'),
    grandParent = this.parentNode.parentNode,
    newrespondform = '<div class="commentresponse"><span></span><span><p class="author">Leave a reply:</p><form id="commentform" action="http://split.snippetspace.com/wp-comments-post.php" method="post" onsubmit="addcomment(); return false;"><input id="author" aria-required="true" name="author" type="text" placeholder="Your name"/><input id="email" aria-required="true" name="email" type="text" placeholder="Email address" /><textarea id="comment" aria-required="true" name="comment" rows="8"></textarea><input id="submit" name="submit" type="submit" value="Post Comment" /><input id="comment_post_ID" name="comment_post_ID" type="hidden" value="'+resid+'" /></form></span></div>';
    grandParent.parentNode.insertBefore(newrespondform, grandParent.nextSibling);
    }
    var responsebtn = document.getElementsByClassName('comment-reply-link');
    for(var i = 0; i < responsebtn.length; i++){
                    bindEvt(responsebtn[i], "click", addresform);
                };}

HTML:

<div>
    <span></span>
    <span>
        <p class="author">Christopher</p>
        <div class="comment-reply-link" id="106"></div>
        <p>test comment 2 to see if it increments!</p>
    </span>
</div>
4

2 に答える 2

2

コードにはいくつかの問題があります。

まず、プロパティparentNodeにはノードのセットではなく単一のノードのみが含まれる[0]ため、最初のノードを取得するために申請する必要はありません。次に、insertAfterネイティブJavaScriptにはメソッドがありません。代わりに、でトリックを使用できますinsertBefore。したがって、ソリューションは次のようになります。

var grandParent = this.parentNode.parentNode;
grandParent.parentNode.insertBefore(newrespondform, grandParent.nextSibling);
于 2013-03-11T14:11:32.917 に答える
0

parentNodeは配列ではないので、を取り除くだけで[0]よいと思います。

this.parentNode.parentNode.insertAfter(newrespondform);
于 2013-03-11T14:09:28.983 に答える