Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript整数数组错误_Javascript_Arrays_Integer_Undefined - Fatal编程技术网

Javascript整数数组错误

Javascript整数数组错误,javascript,arrays,integer,undefined,Javascript,Arrays,Integer,Undefined,我正在制作一个函数,它接受用户输入,并且必须将其显示为7个字符,即,如果输入42.54,它将显示0004254。我的问题是,我获取一个整数并将其应用于数组,在应用0时导致未定义的错误 function BackDataDefaultInput() { // Balance var count; var newNum = ""; var balanceText = document.getElementById('balanceNumBox').value; cou

我正在制作一个函数,它接受用户输入,并且必须将其显示为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];
}
函数BackDataDefaultInput(){
//平衡
var计数;
var newNum=“”;
var balanceText=document.getElementById('balanceNumBox').value;
count=balanceText.length;
而(计数>0&&count<7){
newNum+=“0”;
计数++
}
var formattedBalance=parseInt(balanceText,10)*100;
对于(变量i=0;i
这段代码在我必须将它乘以100才能得到正确的格式之前就已经运行了。因为我刚刚添加了两个字符串。有人能帮我想出一个解决方案吗?

原语(如数字)是不可变的;如果有

var formattedBalance = parseInt(balanceText, 10) * 100;
无法继续重新分配索引属性,如

formattedBalance[i] = new Array();
使用正则表达式删除(可能的)句点并使用
padStart
可能比使用数组更容易:

函数BackDataDefaultInput(){
const balanceText='42.54';//document.getElementById('balanceNumBox').value;
console.log(
平衡文本
.更换(/\./g,,)
.padStart(7,'0')
);
}

BackDataDefaultInput();
尝试使用以下函数

var balanceText=“42.54”//document.getElementById('balanceNumBox').value;
var formattedBalance=余额文本*100;
函数formatInteger(str,max){
str=str.toString();
返回str.lengthconsole.log(formatInteger(formattedBalance,7));
回答我的问题,以防它对任何人有帮助:

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;
    }
}
函数BackDataDefaultInput(){
var balanceText=document.getElementById('balanceNumBox').value;
var余额=parseFloat(balanceText)*100;
balanceText=字符串(余额);
while(balanceText.length>0&&balanceText.length<7){
balanceText='0'+balanceText;
}
}

我现在不再是“未定义的”。但是42.54的输出是0004200,4254是0425400。因此它似乎附加了两个最后的0。我有一个输入掩码函数,最多只能接受0000.00,即4个数字和2个小数,如果这有什么不同的话。将“var formattedBalance=parseInt(balanceText,10)*100;”编码到“var formattedBalance=balanceText*100;”