javascript - 获取增加的值但不获取减少的值

标签 javascript php html ajax

我有这个功能。

  function getnewads(){
      var newer ;
      var old_val =  $("#new_data").val() ;
    $.ajax({
         type: "POST",
          url: "users/process.php",
         data:{
              getnewads: "getnewads"
              },
        cache: false ,
      dataType: 'json',
         async: false
   }).success(function(dat){
    if(dat.status == 'success'){
             $("#new_data").empty();
                for(i = 0;i < dat.id.length; i++){
                  if(old_val > dat.counts ){ newer = old_val ;}else{ newer = dat.counts; }
            $("#new_data").html('<div value="'+newer+'" class="added_ad">'+ newer +' new ads </div>');


            }
            }
    //console.clear();
 });
  }

和 html

   <div id="new_data" class="new_data">
   </div>

在广告 php 文件中我有

   getnewads();
   setInterval(function() { getnewads(); }, 10000);

使用每 10 秒获取一次广告的进程文件。我有这个查询来每 10 秒检查一次新广告。

   SELECT m.id ,m.created_pub ,count(*) as counts FROM ads m 
                            WHERE m.published=1  AND TIMESTAMPDIFF(SECOND,created_pub,?)< 100 

我的问题:

一切都很好,但我无法得到我想要的结果。

示例:

如果有 1 个广告即将推出,则显示 ----> 1 个新广告

如果有 2 个广告即将到来,则显示 ----> 2 个新广告。

但是如果时间差是 mpre 然后 10 秒,它会显示 ---> 0 个新广告(再次)。

我想要的是不要将计数减少到 0,但我希望它保留在 2 个新广告中,直到我点击该 div,然后它会将计数重置为 0,就像新问题中的 Stackoverflow 一样。

我有什么遗漏吗?任何帮助将不胜感激。

编辑:使用答案后我使用了这个函数,但我仍然得到不需要的结果。我更改为在 div 为空时显示和隐藏它。

  function getnewads(){
  var newer ;
     // This fetches old value from 'data-value' attribute
   var old_val =  $("#new_data").data('value') ;
  $.ajax({
    type: "POST",
    url: "users/process.php",
    data:{
        getnewads: "getnewads"
    },
    cache: false ,
    dataType: 'json',
    async: false
 }).success(function(dat){
  if(dat.status == 'success'){
      $("#new_data").empty();
      for(i = 0;i < dat.id.length; i++){
          if(old_val >= dat.counts ){ newer = dat.counts ;}else{ newer = old_val; }
        if(newer > 0){
          $("#new_data").html('<div class="added_ad">'+ newer +' new ads </div>');
          // This set 'data-value' attribute to #new_data element
          $("#new_data").data('value',newer);
          $("#new_data").show();
          }
      else{$("#new_data").hide();
                $("#new_data").data('value',0);
               }

      }
  }
 });
 }

函数发生的情况是:

如果出现 1 个广告 --> 它会显示 1 个新广告。查询 10 秒后,它会删除 new_data 的这个 div。所以我知道它不会保存旧值。

出了什么问题?

最佳答案

我发现您的代码有两个问题

  1. 不要在 div 中使用值,尝试使用 data-value 并使用以下命令获取旧值 $('#new_data').data('value');

  2. 此外,您还将值添加到了错误的元素中。试试这个。

    function getnewads(){
       var newer ;
       // This fetches old value from 'data-value' attribute
       var old_val =  $("#new_data").data('value') ;
       $.ajax({
            type: "POST",
            url: "users/process.php",
            data:{
                getnewads: "getnewads"
            },
            cache: false ,
            dataType: 'json',
            async: false
       }).success(function(dat){
          if(dat.status == 'success'){
              $("#new_data").empty();
              for(i = 0;i < dat.id.length; i++){
                  if(old_val > dat.counts ){ newer = old_val ;}else{ newer = dat.counts; }
    
                  $("#new_data").html('<div class="added_ad">'+ newer +' new ads </div>');
                  // This set 'data-value' attribute to #new_data element
                  $("#new_data").data('value',newer);
              }
          }
        });
    }
    

关于javascript - 获取增加的值但不获取减少的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26859639/

相关文章:

javascript - PHP:将变量传递给 JavaScript 方法

html - 如何使 div 的百分比宽度相对于父 div 而不是视口(viewport)

javascript - 如何使用 CSS 设置表单样式

javascript - 为什么 $.load( handler(eventObject) ) 对 Ajax 请求后从服务器返回的数据不起作用,试图让它等待所有图像加载

javascript - 如何在这个随机背景js中连续两次不出现相同的bg

php - jQuery + AJAX 检索输入提交类型发送的数据

javascript - Knockout Kendo TimePicker 禁用用户文本输入

javascript - 构造封装 Node.js 请求的函数

php - 将多行文本从数据库加载到 TextArea

php - Yii CDbCriteria Joins 的小问题