我有这个功能。
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。所以我知道它不会保存旧值。
出了什么问题?
最佳答案
我发现您的代码有两个问题
不要在
div
中使用值,尝试使用 data-value 并使用以下命令获取旧值$('#new_data').data('value');
此外,您还将值添加到了错误的元素中。试试这个。
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/