如何在Javascript中调整输入字段行到数字?



我正在编写一个数学游戏,用户必须通过除以2将十进制数转换为二进制数。我想调整行到二进制数的长度(例如8是1000,所以它应该只生成4行来转换二进制数中的数字)。我使用display()生成1-31之间的数字,deciToBin()将十进制转换为二进制,createBoxes()将行调整为二进制数字的长度。但是它只对第一轮有效。如果我继续玩,会出现多于二进制数的行数或少于二进制数的行数

两点观察:

  • 我没有看到任何地方,你曾经设置任何inputboxes.style.visibilityhidden。似乎他们应该在每个新数字设置它的盒子之前都被隐藏起来(有点像"重置")。否则,现在的方式是,如果第一个number是30,你将显示5个框,如果下一个数字是1,你仍然显示5个框,因为最后四个仍然是visibility:visible
  • 我认为你可以用createBoxes((number).toString(2).length)代替createBoxes(deciToBin(number).length),然后去掉deciToBin()toString()标准且快速。

UPDATE:这里有一个备用createBoxes,每次有新数字时都会设置所有inputboxes:

// untested code
function createBoxes(value) {
for (var i = 0, len = inputboxes.length; i < len; i++) {
if (i < value) {
inputboxes[i].style.visibility = "visible";
} else {
inputboxes[i].style.visibility = "hidden";
}
}
}