我承担了将10个元素存储在一个数组中的任务,那么我必须添加所有这些元素。
我的问题是在数组中存储每个单独的元素时出现的。 当我将for循环的长度设置为numbers.length时,它将使用输入的第一个数字填充数组,如果将长度设置为10,则仅将值放在index [0]中,而将其他值保留为未定义。
var numbers = new Array();
function addnew() {
var un = document.getElementById('userNumber').value;
for (var i = 0; i < 10; i++) {
numbers.push(" " + un[i]);
}
console.log(numbers);
document.getElementById('elements').innerHTML = numbers;
期望的输出是一个列表,该列表显示用户输入到数组中的值(长度为10)以及这些值的总和。 它实际显示的是第一个输入的数字,然后是未定义的数字,直到达到最大长度10。
答案 0 :(得分:0)
这是因为un
字符串长度为1,因为它没有完全保存
var numbers = new Array();
function addnew() {
var un = '123';
for (var i = 0; i < Math.min(10,un.length); i++) {
numbers.push(" " + un[i]);
}
console.log(numbers);
document.getElementById('elements').innerHTML = numbers;
}
}
答案 1 :(得分:0)
如果用户在每个数字之间输入一个空格,则可以将一个字符串拆分成一个数组。
numbers = un.split(" ");
数字现在包含一个字符串数组。
然后将字符串转换为数字,以便获得总和。
for (var i = 0; i < numbers.length; i++) {
numbers[i] = Number(numbers[i]);
}
然后这将给您总和。
sumOfNumbers = numbers.reduce((a, b) => a + b, 0);
console.log(sumOfNumbers);
un = "1 2 3 12";
numbers = un.split(" ");
console.log(numbers);
for (var i = 0; i < numbers.length; i++) {
numbers[i] = Number(numbers[i]);
}
console.log(numbers);
sumOfNumbers = numbers.reduce((a, b) => a + b, 0);
console.log("sum is " + sumOfNumbers);
答案 2 :(得分:-1)
开始时,您的numbers.length
为0。我认为您应该un.length
function addnew() {
var numbers = [];
var un = document.getElementById('userNumber').value;
for (var i = 0; i < un.length; i++) {
numbers.push(" " + un[i]);
}
console.log(numbers);
document.getElementById('elements').innerHTML = numbers;
}
<input type="text" id="userNumber" onChange="addnew()"/>
<span id="elements"></span>