我正在编写一个数学游戏,用户必须通过除以2将十进制数转换为二进制数。我想调整行到二进制数的长度(例如8是1000,所以它应该只生成4行来转换二进制数中的数字)。我使用display()生成1-31之间的数字,deciToBin()将十进制转换为二进制,createBoxes()将行调整为二进制数字的长度。但是它只对第一轮有效。如果我继续玩,会出现多于二进制数的行数或少于二进制数的行数
两点观察:
- 我没有看到任何地方,你曾经设置任何
inputboxes.style.visibility
到hidden
。似乎他们应该在每个新数字设置它的盒子之前都被隐藏起来(有点像"重置")。否则,现在的方式是,如果第一个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";
}
}
}