JQuery和getelementbyid失败,不是时间问题

JQuery and getelementbyid fail, NOT a timing issue

本文关键字:时间 问题 getelementbyid 失败 JQuery      更新时间:2023-09-26

因为我没有发布JS示例,所以不得不删除我以前的帖子。我现在已经修复了:

我有一个ajax调用,它返回一个新的注释(在页面加载很久之后,这样我就知道目标元素正确地位于DOM中),并将它附加到我的列表中(使用jquery的append例程在"wli_5_comments.comments"下)。问题是由于某种原因,我无法访问"wli_5_comments"元素。Jquery认为它不存在,getelementbyid也失败了。

例如,如果我使用document.getelementbyid(someid).ninnerHTML,它会告诉我"无法获得未定义的html"或其他什么。警告that或jquery中的任何属性都会导致相同的结果:未定义。。。不存在,尽管我可以在我的文档检查器中看到它。id是相同的,引号很好,所有的标签都正确地关闭了。WTH?

<div id="wli_5_commments" class="wli_comments_area hide" style="display: block;">
<h2 class="hdr">Comments</h2>
    <div class="comments">
        <div id="wlc_21" class="wli_comment" userid="9">
            <div class="msg">adfsgfhgsf</div>
            <div class="name_area">
                <div class="name"><div>someuser</div>
                <div class="date">(2014-04-12)</div>
                </div>
            </div>
            <div class="buttons"><img class="delete_button" src="http://localhost:80/graphics/red_x_off.png" pop="Delete this comment"></div>

        </div>      
                    </div>
                </div>

这是我的测试代码,它在每一步都失败(除了第一个警报,它会导致预期的"wli_5_comments"):

                    alert('wli_'+wli_key+'_comments');
                alert(document.getElementById('wli_'+wli_key+'_comments').innerHTML);
                alert('#wli_'+wli_key+'_comments'+$('#wli_'+wli_key+'_comments').attr('id'));
                console.log($('#wli_'+wli_key+'_comments').find('.comments').html());
                $('#wli_'+wli_key+'_comments .comments').append(msg['result']);

还要注意,JS不仅在"document.ready"块中调用,而且在AJAX回调中调用,该回调仅在用户交互后触发。这与调用一个还不存在的元素无关(就像StackOverflow认为我的问题是重复的所有其他答案一样)。

Bah。我通过将控制台显示的ID复制到我的警报代码中,最终解决了这个问题。当我这样做的时候,我注意到"commments"answers"comments"不是同一个词(其中多了一个"m")。

谢谢大家:)

相关文章: