parseInt()返回随机值

时间:2017-01-17 18:17:30

标签: jquery

我正在尝试将文本从span解析为整数,然后添加一个并将值返回到文本

    var count = parseInt($(".contact_unread_"+$from).text(),10) + 1;
    $(".contact_unread_"+$from).text(count);

但调用函数6次的结果如下,起始值为0:

0>>> 1

1>>> 12

12>>> 1213

1213>>> 12131214

12131214>>> 1213121412131215

1213121412131215>>> 1.2131214121312151e + 31

我不认为我将值连接成字符串或输出会有所不同。

功能:

   function receiveMessage($from,$message) {
chatname = $("#chat").text(); 
if ($message !=""){
  if(chatname == $from){
      $(".msg_container_base").append('<div class="row msg_container base_receive"><div class="col-md-2 col-xs-2 avatar"><img src="http://www.bitrebels.com/wp-content/uploads/2011/02/Original-Facebook-Geek-Profile-Avatar-1.jpg" class=" img-responsive "></div><div class="col-md-10 col-xs-10"><div class="messages msg_receive"><p>'+$message+'</p><time datetime="2009-11-13T20:00">Timothy • 51 min</time></div></div></div>');
   }else{
   var count = parseInt($(".contact_unread_"+$from).text(),10) + 1;
    $(".contact_unread_"+$from).text(count);
   }
}

}

1 个答案:

答案 0 :(得分:3)

parseInt不会表现得很混乱。

显然,您有两个与您正在使用的选择器相匹配的元素。 text与其他jQuery访问器不同(叹气):当你在多个元素上调用它时,它会返回 all 的文本,而不仅仅是第一个htmlattr(以及propcss和...)确实如此。

所以你在第一遍中将它们都设置为1,然后返回"11"解析为11(+ 1 = 12),然后返回"1212"(+ 1 = 1213)等等。

以下是两个这样的元素的例子:

var $from = "x";
var timer = setInterval(function() {
  var count = parseInt($(".contact_unread_"+$from).text(),10) + 1;
  $(".contact_unread_"+$from).text(count);
  console.log("count = " + count);
}, 500);
setTimeout(function() {
  console.log("Stopping now");
  clearInterval(timer);
}, 5000);
<div class="contact_unread_x">0</div>
<div class="contact_unread_x">0</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

同样的例子只有一个:

var $from = "x";
var timer = setInterval(function() {
  var count = parseInt($(".contact_unread_"+$from).text(),10) + 1;
  $(".contact_unread_"+$from).text(count);
  console.log("count = " + count);
}, 500);
setTimeout(function() {
  console.log("Stopping now");
  clearInterval(timer);
}, 5000);
<div class="contact_unread_x">0</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>