不能有条件地增加jQuery中的值

时间:2019-02-11 16:31:32

标签: jquery

在使用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

虽然我可以看到正在收到响应plusvar oldLikes = $("#like_count").text();,但是html段落中的值未更改。

我也尝试过const并使用了一些字符串而不是增加值,但是什么都没有改变。

我该如何解决?

2 个答案:

答案 0 :(得分:2)

这里实际上有很多问题。

  1. 您不能在val()元素上使用<p>。保留用于表单输入。
  2. 您需要将<p>标记的innerHTML值解析为整数。
  3. 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)

您的代码很少出现问题:

  1. $(function() {等待文档准备就绪,在上下文中没有任何意义。
  2. 当您使用--++分配相同的值(实际更改之前)时,未分配
  3. oldLikes 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>