所以我期待制作一个base8时钟。为方便起见,一天仍使用二十四个30 8 小时。我原本以为在最后一步中将个体值转换为基数8,然后将它们按顺序投放并显示它们会起作用,但我得到了奇怪的值,这些值远远超过当前时间。它甚至给了我这样的数字.9。Base8没有9,它有11 8 。
是的我基于我在网站上找到的时钟代码,我很懒。也许这是我的垮台。但有人可以告诉我哪里出错了吗?
<!--
/*By JavaScript Kit
http://javascriptkit.com
Credit MUST stay intact for use
*/
function show2() {
if (!document.all && !document.getElementById)
return
thelement = document.getElementById ? document.getElementById("tick2") : document.all.tick2
var Digital = new Date();
var hours = Digital.getHours();
var minutes = Digital.getMinutes();
var seconds = Digital.getSeconds();
var hour8 = parseInt(hours, 8);
var min8 = parseInt(minutes, 8);
var sec8 = parseInt(seconds, 8);
if (hour8 == 0)
hour8 = 10
var ctime = hour8 + ":" + min8 + ":" + sec8
thelement.innerHTML = "<b style='font-size:14;color:blue;'>" + ctime + "</b>"
setTimeout("show2()", 1000)
}
window.onload = show2
//-->
&#13;
<span id=tick2>
</span>
&#13;
答案 0 :(得分:2)
您未正确使用parseInt功能。第二个参数是&#34; 2到36之间的整数,表示所提供字符串的基数(数学数字系统中的基数)。&#34;因为您的输入是十进制的,但是您的参数表示它的八进制,该函数无法按预期工作。
答案 1 :(得分:2)
除了你需要做的事情
setTimeout(show2, 1000)
没有&#34;和(),你使用parseInt是错误的,基数是字符串ALREADY表示的基础。
你需要这样做
var hour8 = parseInt(hours).toString(8)