这是html:
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr align="center" valign="middle">
<td width="10" class="pagestyle" onClick="pageNo(-1);" align="right">«</td>
<td id="pageNum" class="pagestyle">1/5</td>
<td width="10" class="pagestyle" onClick="pageNo(+1);" align="left">»</td>
</tr>
</table>
这是相应的javascript:
var page = 0;
function pageNo(off) {
if (((page + off) > -1) && ((page + off) < 6)) {
page = page + off;
parseRSS(page);
} else if ((page + off) === 6) {
page = 0;
parseRSS(page);
} else if ((page + off) === -1) {
page = 5;
parseRSS(page);
}
}
这应该做的是从第1页开始,然后根据点击的链接向上或向下计数。但是,当我们到达第5页时,我必须单击两次才能返回到第1页。导致双击行为的原因是什么?
答案 0 :(得分:3)
总页数是多少? 你是从1到6或从0到5枚举它们吗?
相应地更改你的js函数并简化js表达式(提到你有从0到5的页面):
var page = 0;
var number_of_pages = 6;
function pageNo(off) {
page = (page + off + number_of_pages) % number_of_pages;
}
答案 1 :(得分:3)
答案很简单,因为你的javascript代码是从零索引的,但是你的rss页面是从一个索引的吗?
换句话说,你正在对你的javascript代码进行处理,好像你有6个页面(0到5个包含)和&amp;你实际上只有5页的RSS?所以,当你在第5页(你的javascript中的页面= 4)并且你点击下一步时,它会带你到第6页(页面= 5),但是如果你的parseRSS函数忽略了这个请求或者因为它没有引发错误没有第6页的数据,似乎什么都不做。从那里,显然,再次点击将使您回到第1页(页面= 0)。
答案 2 :(得分:2)
将此代码放入firebug并运行它......
var page = 5;
function pageNo(off) {
if (((page + off) > -1) && ((page + off) < 6)) {
page = page + off;
} else if ((page + off) === 6) {
page = 0;
} else if ((page + off) === -1) {
page = 5;
}
}
pageNo(+1);
alert(page);
警告0.哪个是正确的。您正在从第5页将页面设置为0.不是1.
答案 3 :(得分:2)
首先,我将使用简化形式:
var page = 0;
function pageNo(off) {
page = (page + 6 + off) % 6;
parseRSS(page);
}
你有点击两次以返回第1页(5 -> 0 -> 1
)。您可能需要(假设您似乎表明您的页面范围是1到5):
var page = 1;
function pageNo(off) {
var numpages = 5;
page = (page - 1 + numpages + off) % numpages + 1;
parseRSS(page);
}
这会在添加值之前将范围(1,5)转换为(0,4)(以及包装值,这是避免在负值上计算模数的方法 - 某些语言有问题),然后添加偏移和包装,然后再次加1以返回范围(1,5)。