在div的祖父母后插入行

时间:2013-03-11 14:06:18

标签: javascript

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>

2 个答案:

答案 0 :(得分:2)

您的代码中存在多个问题。

首先,属性parentNode仅包含一个节点,而不包含一组节点,因此您无需应用[0]来获取第一个节点。接下来,本机JavaScript中没有insertAfter方法。相反,你可以使用insertBefore的技巧。所以解决方案看起来可能是这样的:

var grandParent = this.parentNode.parentNode;
grandParent.parentNode.insertBefore(newrespondform, grandParent.nextSibling);

答案 1 :(得分:0)

parentNode不是一个数组,所以只要摆脱[0]我就应该这样做。

this.parentNode.parentNode.insertAfter(newrespondform);