请高手帮忙分析下这段代码
这是dedecms里关于顶一下功能的代码,里面的continue、break到底起什么作用?另外这个j又是干啥的呢?不是很明白,哪位高手帮我解读一下?functionpo...
这是dedecms里关于顶一下功能的代码,里面的continue、break到底起什么作用?另外这个j又是干啥的呢?不是很明白,哪位高手帮我解读一下?
function postDigg(ftype,aid)
{
var taget_obj = document.getElementById('newdigg');
var saveid = GetCookie('diggid');
if(saveid != null)
{
var saveids = saveid.split(',');
var hasid = false;
saveid = '';
j = 1;
for(i=saveids.length-1;i>=0;i--)
{
if(saveids[i]==aid && hasid) continue;
else {
if(saveids[i]==aid && !hasid) hasid = true;
saveid += (saveid=='' ? saveids[i] : ','+saveids[i]);
j++;
if(j==20 && hasid) break;
if(j==19 && !hasid) break;
}
}
if(hasid) { alert("您已经顶过该帖,请不要重复顶帖 !"); return; }
else saveid += ','+aid;
SetCookie('diggid',saveid,1);
}
else
{
SetCookie('diggid',aid,1);
}
myajax = new DedeAjax(taget_obj,false,false,'','','');
var url = "{dede:global.cfg_phpurl/}/digg_ajax.php?action="+ftype+"&id="+aid;
myajax.SendGet2(url);
} 展开
function postDigg(ftype,aid)
{
var taget_obj = document.getElementById('newdigg');
var saveid = GetCookie('diggid');
if(saveid != null)
{
var saveids = saveid.split(',');
var hasid = false;
saveid = '';
j = 1;
for(i=saveids.length-1;i>=0;i--)
{
if(saveids[i]==aid && hasid) continue;
else {
if(saveids[i]==aid && !hasid) hasid = true;
saveid += (saveid=='' ? saveids[i] : ','+saveids[i]);
j++;
if(j==20 && hasid) break;
if(j==19 && !hasid) break;
}
}
if(hasid) { alert("您已经顶过该帖,请不要重复顶帖 !"); return; }
else saveid += ','+aid;
SetCookie('diggid',saveid,1);
}
else
{
SetCookie('diggid',aid,1);
}
myajax = new DedeAjax(taget_obj,false,false,'','','');
var url = "{dede:global.cfg_phpurl/}/digg_ajax.php?action="+ftype+"&id="+aid;
myajax.SendGet2(url);
} 展开
1个回答
展开全部
那个 j 从当前代码来说是可以没有的,之所以有这个 j 是因为这段代码写的很烂。
aid 是当前帖子的id
saveid 是已经顶过帖子的id,以逗号隔开。例如:1,2,3,4,5
他想通过cookie记录当前用户已经顶过帖子的id,然后根据aid来判断是否顶过了,顶过了就提示,否则就顶贴,并把当前aid加入到cookie里面。
他这个如果不在digg_ajax.php里面做是否顶过贴的判断,用户清除了cookie这代码会出bug。
这种东西后端也必须判断。
从代码上来看,应该不能取消顶贴,否则他这个就有bug了,中间的continue之类的东西写的太烂了导致你看不懂,我给你改进一下代码,你就懂了,其实根本不需要那么复杂
function postDigg(ftype, aid) {
var taget_obj = document.getElementById('newdigg');
var saveid = GetCookie('diggid');
//如果saveid是null 则把他变为一个空字符串
saveid = typeof saveid == "string" ? saveid : "";
var saveids = saveid.split(',');
for(var i = saveids.length - 1; i >= 0; i--) {
if(saveids[i] == aid) {
//如果cookie存的id里面有,说明已经赞过了
alert("您已经顶过该帖,请不要重复顶帖 !");
//return就可以退出方法了
return;
}
}
//将新的aid加入到saveids里面
saveids.push(aid);
//将新的saveid写入cookie
SetCookie('diggid', saveids.join(","), 1);
myajax = new DedeAjax(taget_obj, false, false, '', '', '');
var url = "{dede:global.cfg_phpurl/}/digg_ajax.php?action=" + ftype + "&id=" + aid;
myajax.SendGet2(url);
}
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询