getElementById无法正确设置文本

问题描述 投票:0回答:2

我有一个模板,我试图在我的ajax成功函数中使用getElementById.innerHTML来更改跨度的内容,但是它无法正常工作。我看不出问题出在哪里,因为当我打印出数据时它是正确的。目前,我有这样的模板:

<div class="post-ctr">
    <div>
      <span id="like-count-d"></span>
    </div>
    <div class="like-section">
     <!-- likeBtn Form is here which gets updated -->
    </div>
</div>

我的jQuery代码是:

$(document).ready(function (e) {
    $('.post-ctr').on("click", ".likeBtn", function (e) {
        var btn = $(this)
        e.preventDefault();
        e.stopImmediatePropagation();
        var tk = $(this).attr("data-token");
        $.ajax({
            type: "POST",
            url: $(this).attr("data-url"),
            dataType: 'json',
            data: { 'csrfmiddlewaretoken':tk },
            success: function (data){
                $(btn).closest(".like-section").html(data.post_likes);
                $(document).getElementById('like-count-d').innerHTML = data.likescount;
            },
            error: function(rs, e){
                console.log(rs.responeText);
            },
        });
    });
})

如何管理具有该ID的span元素?

javascript html jquery
2个回答
3
投票

问题是jQuery库选择器$被误认为是本机JavaScript函数。

[在jQuery中,当您将document$一起选择时,您并不是真正在处理文档本身,而是在处理文档的一些“包装”对象,该对象由jQuery([C0 ]),并且在该包装对象中没有$innerHTML的概念,但是有getElementById

如果要选择和编辑带有ID的特定元素的HTML,请在字符串中使用$(document.body).html("something")运算符,并在其上调用#方法,如下所示:

.html

[如果您想使用$("#something").html("somethingElse"); getElementById,则不要使用jQuery的innerHTML,只需使用对节点本身的引用,就像这样:

$

0
投票

您可以简单地使用jQuery的html()或text()。请参考此。

document.getElementById('like-count-d').innerHTML = data.likescount;
© www.soinside.com 2019 - 2024. All rights reserved.