我有这个功能。
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个广告正在投放,则会显示----&gt; 1个新广告
如果有2个广告正在投放,则会显示----&gt; 2个新广告。
但是如果时差是mpre然后是10秒,则显示---&gt; 0个新广告(再次)。
我想要的是不会减少数到0,但我希望它留在2个新广告,直到我点击该div然后它将重置计数到0完全像新问题中的Stackoverflow。< / p>
有什么东西我不见了?任何帮助将不胜感激。
编辑:在使用答案之后我使用了这个功能,但我仍然得到了不想要的结果。当它变空时,我改变了显示和隐藏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个广告 - &gt;它显示了1个新广告。在查询10秒后,它会消除此new_data
的div。所以我明白它并没有保存旧的价值。
答案 0 :(得分:1)
我可以在您的代码中看到两个问题
请勿在{{1}}中使用值尝试使用数据值,然后使用获取旧值
div
您还要将值添加到错误的元素中。试试这个。
$('#new_data').data('value');