我正在尝试将文本从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);
}
}
}
答案 0 :(得分:3)
parseInt
不会表现得很混乱。
显然,您有两个与您正在使用的选择器相匹配的元素。 text
与其他jQuery访问器不同(叹气):当你在多个元素上调用它时,它会返回 all 的文本,而不仅仅是第一个html
和attr
(以及prop
和css
和...)确实如此。
所以你在第一遍中将它们都设置为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>