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

Why isn't my output in base 8?

本文关键字:我的 输出 为什么      更新时间:2023-09-26

所以我正在寻找一个base8时钟。为了方便起见,仍然使用一天二十四 308 小时。我本以为在按顺序抛出它们并显示它们之前的最后一步将单个值转换为基数 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
  //-->
<span id=tick2>
</span>

除了你需要做的事实

setTimeout(show2, 1000)

如果没有 " 和 (),你对 parseInt 的使用是错误的,基数是字符串已经表达的基础。

你需要这样做

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

看这个 jsFiddle

您错误地使用了 parseInt 函数。第二个参数是"一个介于 2 和 36 之间的整数,表示所提供字符串的基数(数学数字系统中的基数)。由于您的输入是十进制的,但您的参数表示它是八进制的,因此该函数无法按预期工作。