首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个for循环只打印一个元素?

为什么这个for循环只打印一个元素?
EN

Stack Overflow用户
提问于 2019-11-16 19:19:29
回答 1查看 72关注 0票数 0

你能帮我解决我在MDN上发现的这个问题吗?

代码语言:javascript
运行
复制
var list = document.querySelector('.output ul');
var totalBox = document.querySelector('.output p');
var total = 0;

list.innerHTML = '';
totalBox.textContent = '';

var products = [
  'Underpants:6.99',
  'Socks:5.99',
  'T-shirt:14.99',
  'Trousers:31.99',
  'Shoes:23.99'
];

for (var i = 0; i < products.length; i++) {
  var subArray = products[i].split(':');
  var name = subArray[0];
  var price = Number(subArray[1]);

  total += price;
  itemText = name + ' — $' + price;

  var listItem = document.createElement('li');

  listItem.textContent = itemText;
  list.appendChild(listItem);
}

totalBox.textContent = 'Total: $' + total.toFixed(2);
代码语言:javascript
运行
复制
<div class="output">
  <ul></ul>
  <p></p>
</div>

我理解其中的逻辑,但是当我在控制台上只编写下面这部分代码时,它只返回"Socks:5.99"

代码语言:javascript
运行
复制
var products = [
  'Underpants:6.99',
  'Socks:5.99',
  'T-shirt:14.99',
  'Trousers:31.99',
  'Shoes:23.99'
];

for (var i = 0; i < products.length; i++) {
  var subArray = products[i].split(':');
  var name = subArray[0];
  var price = Number(subArray[1]);
}

subArray只包含该元素。看起来for循环不工作了。它不是应该给我一个完整的新数组吗?

代码语言:javascript
运行
复制
Underpants — $6.99
Socks — $5.99
T-shirt — $14.99
Trousers — $31.99
Shoes — $23.99
EN

回答 1

Stack Overflow用户

发布于 2019-11-16 19:31:15

你的代码可以工作,你只需要将每次迭代的结果存储在某个地方,比如在一个新的数组中。下面是一个示例:

代码语言:javascript
运行
复制
var products = [
  'Underpants:6.99',
  'Socks:5.99',
  'T-shirt:14.99',
  'Trousers:31.99',
  'Shoes:23.99'
];

var formattedProducts = [];

for (var i = 0; i < products.length; i++) {
  var subArray = products[i].split(':');
  var name = subArray[0];
  var price = Number(subArray[1]);
  formattedProducts.push(name + ' - $' + price);
}

console.log(formattedProducts);

编辑

在您的第一个代码示例中,结果直接存储在.output ul列表元素内的DOM中:

代码语言:javascript
运行
复制
  var listItem = document.createElement('li');

  listItem.textContent = itemText;
  // list is defined outside the loop and will receive a new li element with the result of the iteration as textContent
  list.appendChild(listItem);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58890146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档