我正在制作一个函数,它接受用户输入,并且必须将其显示为7个字符,即如果输入42.54,它将显示0004254。我的问题是,我获取一个整数并将其应用于数组,导致在应用0时出现未定义的错误
function BackDataDefaultInput() {
// Balance
var count;
var newNum = "";
var balanceText = document.getElementById('balanceNumBox').value;
count = balanceText.length;
while (count > 0 && count < 7) {
newNum += '0';
count++
}
var formattedBalance = parseInt(balanceText, 10) * 100;
for (var i = 0; i < balanceText.length; i++) {
formattedBalance[i] = new Array();
// Error here showing as undefined for formattedBalance[i]
newNum += formattedBalance[i];
}
在我不得不将它乘以100以获得正确的格式之前,这段代码是有效的。因为我只是追加了两个字符串。有没有人能帮我想个办法?
发布于 2018-08-10 08:57:03
原语(如数字)是不可变的;如果您有
var formattedBalance = parseInt(balanceText, 10) * 100;
您不能继续重新分配索引属性,如
formattedBalance[i] = new Array();
用正则表达式去掉(可能的)句点并使用padStart
可能比乱用数组更容易:
function BackDataDefaultInput() {
const balanceText = '42.54'; // document.getElementById('balanceNumBox').value;
console.log(
balanceText
.replace(/\./g, '')
.padStart(7, '0')
);
}
BackDataDefaultInput();
发布于 2018-08-10 09:14:21
尝试使用以下函数。
var balanceText = "42.54"; //document.getElementById('balanceNumBox').value;
var formattedBalance = balanceText * 100;
function formatInteger(str, max) {
str = str.toString();
return str.length < max ? formatInteger("0" + str, max) : str;
}
console.log(formatInteger(formattedBalance, 7));
发布于 2018-08-10 14:47:18
回答我的问题,以防它对遇到这个页面的任何人有帮助:
function BackDataDefaultInput() {
var balanceText = document.getElementById('balanceNumBox').value;
var balance = parseFloat(balanceText) * 100;
balanceText = String(balance);
while (balanceText.length > 0 && balanceText.length < 7) {
balanceText = '0' + balanceText;
}
}
https://stackoverflow.com/questions/51782627
复制相似问题