为什么我的输出不是基数8?

时间:2014-12-30 13:59:41

标签: javascript clock base

所以我期待制作一个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;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

您未正确使用parseInt功能。第二个参数是&#34; 2到36之间的整数,表示所提供字符串的基数(数学数字系统中的基数)。&#34;因为您的输入是十进制的,但是您的参数表示它的八进制,该函数无法按预期工作。

答案 1 :(得分:2)

除了你需要做的事情

setTimeout(show2, 1000)

没有&#34;和(),你使用parseInt是错误的,基数是字符串ALREADY表示的基础。

你需要这样做

var hour8 = parseInt(hours).toString(8)

请参阅this jsFiddle