在使用jQuery进行Ajax调用并成功接收到res
之后,我想在收到<p>
响应时增加plus
的值,并在收到minus
响应时递减收到 success: function(res) {
var oldLikes = $("#like_count").val();
console.log('oldLikes is:', oldLikes);
console.log('response:', res);
if (res =='minus') {
$(function() {
$("#like_count").val(oldLikes--) ;
});
} else if (res == 'plus') {
$(function() {
$("#like_count").val(oldLikes++) ;
});
} else {
console.log('nothing');
}
}
个响应。
这是我的代码:
<p id="like_count">4</p>
html部分:
minus
虽然我可以看到正在收到响应plus
或var oldLikes = $("#like_count").text();
,但是html段落中的值未更改。
我也尝试过const
并使用了一些字符串而不是增加值,但是什么都没有改变。
我该如何解决?
答案 0 :(得分:2)
这里实际上有很多问题。
val()
元素上使用<p>
。保留用于表单输入。<p>
标记的innerHTML值解析为整数。oldLikes++
和oldLikes--
将返回原始数字,然后然后减去或加一。您应该反转运算符,使其分别为++oldLikes
和--oldLikes
。 这是您代码的修订版:
success: function(res) {
var oldLikes = parseInt( $("#like_count").text() );
if (res =='minus')
{
$("#like_count").text( --oldLikes ) ;
}
else if( res == 'plus' )
{
$("#like_count").val( ++oldLikes ) ;
}
}
答案 1 :(得分:0)
您的代码很少出现问题:
$(function() {
等待文档准备就绪,在上下文中没有任何意义。--
或++
分配相同的值(实际更改之前)时,未分配VAR--
之后更改,--VAR
之前更改。
function test() {
var res = 'minus';
var oldLikes = $("#like_count").val();
if (res == 'minus') {
$("#like_count").val(--oldLikes);
} else if (res == 'plus') {
$("#like_count").val(++oldLikes);
} else {
console.log('nothing');
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="number" id="like_count">
<button type="button" onclick="test()">TEST</button>