使用parseInt将整数值添加到字符串中,而不处理动态添加的内容

Add integer value to string using parseInt not working on dynamic added content

本文关键字:添加 处理 动态 parseInt 整数 字符串 使用      更新时间:2023-09-26

我的HTML看起来像这个

<span class="responsesCount"><b>0<b/></span> 
<div class="addOne">submitResponse</div>

每次用户发布对注释的响应时,我都会使用Jquery将类(responseCount)增加一。

$(document).on("pagecreate",function(event) {
    $(document).on('click', '.addOne', function(e) {
        e.preventDefault();
        var commentCount = ".responsesCount";
        var num = $(commentCount).text();
        var newnum = parseInt(parseFloat(num), 10)+1;
        $(commentCount).text(newnum);       
    });    
});

当页面第一次加载时,代码按预期的方式递增一

问题是,当我通过ajax将动态内容加载到页面中时,我得到了一个意外的结果,它似乎是连接的,而不是像预期的那样递增

0
1
12
13
14
15
2

实际输出如下:12 13 14 15 2

 <span class="responsesCount"><b>12131415<b/></span>

我也使用过以下片段,但似乎都不起作用。

$(commentCount).text(parseInt(num) + 1);
$(commentCount).text(parseInt(num, 10) + 1);
$(commentCount).text(num + 1);
$(commentCount).text(num++);
$(commentCount).text(++num);
$(commentCount).text(num * 2);
var num = $(commentCount).text();
$(commentCount).text(parseInt(num) +1); 

我用来将更多内容加载到页面中的代码。

$(document).on('click', '.moreResult', function(event) {
  event.preventDefault();    
  var res = $(".feed:last").attr("id");
$.ajax({
  url: "process/loadmore.php?lastid=" + res,
  success: function(html) {     
      if(html) {
           $(".addResults").append(html).trigger('create');    
      } else { 
           $(".moreResult").html("End!");      
      }
    }
  });
 });     
});  

我整晚都在为这个问题烦恼,似乎什么都不管用!任何帮助都将不胜感激。感谢大家提前提供的帮助。

你为什么这么复杂?你真的需要解析吗?如果没有,看看这个演示:

使用的代码:

$(document).on("create",function(event) { // Your event is called create, isn't it ?
    var count = 0;
    $(".addOne").click(function(e) {
        e.preventDefault();
        $(".responsesCount").text(++count);       
    });    
});

$(function(event) {
    var count = 0;
    $(".addOne").click(function(e) {
        e.preventDefault();
        $(".responsesCount").text(++count);       
    });    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="responsesCount"><b>0<b/></span> 
<div class="addOne">submitResponse</div>

如果是,那么看看这个:

$(document).on("create",function(event) { // Your event is called create, isn't it ?
    $('.addOne').click(function(e) {
        e.preventDefault();
        var num = $(commentCount).text();
        var newnum = parseInt(num, 10) + 1;
        $(".responsesCount").text(newnum);       
    });    
});

在上面的代码中,我清理了所有内容,以关注最重要的内容。您不应该执行parseInt(parseFloat(...)),因为parseInt正在等待string,而parseFloat返回float

$(function() {
    $('.addOne').click(function(e) {
        e.preventDefault();
        var num = $(".responsesCount").text();
        var newnum = parseInt(num, 10) + 1;
        $(".responsesCount").text(newnum);       
    });    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="responsesCount"><b>0</b></span>
<div class="addOne">submitResponse</div>