0

我使用这个 javscript 函数来显示页面导航

<script>
function parseNum(number, val){
number = parseInt(number);
number = number + val;
return (number < 10 ? '0' : '') + number;
}
function next()
{
if(parseInt(document.getElementById("in-page").innerHTML) < parseInt(document.getElementById("t-page").innerHTML))
{
var iid=document.getElementById("in-page").innerHTML;
var id=document.getElementById("in-page").innerHTML;
var realid=document.getElementById("r-page").innerHTML;
document.getElementById("in-page").innerHTML=parseNum(id, 1);
if(parseInt(document.getElementById("flag").innerHTML)=='0')
{
document.getElementById("r-page").innerHTML=parseNum(realid, 1);
}
else if(document.getElementById("flag").innerHTML=='1')
{
document.getElementById("r-page").innerHTML=parseNum(realid, 1);
document.getElementById("flag").innerHTML='0';
}
}
}
</script>

<span id="flag" style="display:none">0</span><span id="prev" onclick=prev();>
<<
</span><span id="r-page" style="display:none" >0</span>  |  <span id="next" style=cursor:pointer; onclick=next();>
>>
</span><br/><br/><span id="in-page">01</span><span >of</span><span id="t-page">12</span>

当点击下一个工作好。但是当数字是 08 并单击下一个页面内跳转到 01 而没有 09 。对于所有测试,此结果相同。此错误仅在 firfox 和 safari 以及 chrome 中发生,即工作正常。

4

2 回答 2

3

改变

number = parseInt(number);

number = parseInt(number, 10);

因为在 Firefox 上(以及在其他浏览器的旧版本中,以 a 开头的数字"0"被解析为八进制,并且解析在第一个超出范围的字符处停止,这仅"0"在您解析"08""09".

于 2013-05-16T11:50:41.537 回答
1

您需要在 parseInt 中指定基数,因为 08 被识别为八进制数。

http://en.wikipedia.org/wiki/八进制

在任何情况下,始终指定基数会更安全。

于 2013-05-16T11:52:14.590 回答