2014-11-11 3 views
0

이 함수가 있습니다.증가 값을 가져 오지만 감소 값은 가져 오지 않습니다.

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

및 광고 PHP 파일에서

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은 내가 광고를 10 초마다 얻는 과정 파일을

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

있습니다. 10 초마다 새 광고를 확인하는이 쿼리가 있습니다.

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

내 문제 :

모두가 잘 작동하지만 난 내 원하는 결과 일하러 couldnt한다.

예 :

경우 한 광고는 ----> 1 개 새 광고

이 광고가 오는 경우를 보여줍니다오고, 그것은 ----> 2 개 새 광고를 보여줍니다.

but 시간차가 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 - 새 광고를 보여줍니다>. 10 초간의 쿼리가 끝나면 new_data의 div가 사라집니다. 그래서 나는 그것이 오래된 가치를 저장하지 않는다는 것을 이해합니다.

무엇이 잘못 되었나요?

답변

1

난 당신의 코드를 볼 수있는 두 가지 문제가있다

  1. div 가치 대신에 데이터 값을 사용하여 시도하고 또한 $('#new_data').data('value');

  2. 당신이 추가로 이전 값을 가져 오기 사용하지 마십시오 잘못된 요소 값. 이 시도. ({, 0) $ (이) .DATA ('값';} '클릭'기능()).```$를 ('#의 new_data')에 추가로

    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); 
          } 
         } 
        }); 
    } 
    
+0

시도; ''' – Trunst

+0

오 시간 간격 후에 0으로 재설정됩니다. imediatly 어떻게 재설정합니까? –

+0

내용을 0으로 설정해야합니다. 'onClick'함수에 추가하십시오. ''$ (this).html ('

0 new ads
');''' – Trunst

관련 문제