【问题标题】:Returning in DOM values of an array of objects返回对象数组的 DOM 值
【发布时间】:2019-04-20 16:04:27
【问题描述】:

我有一个对象数组——每个对象包含几个值。

因为我有新对象,所以这些都保存在一个数组中。但是,我想在我的 DOM 中发布这个数组和新对象。这个想法是我的 DOM 列出了我的数组的所有对象,并且每次创建一个新对象时,它都会添加到我的数组中并在我的 DOM 中更新。

我很难理解如何在我的 DOM 中发布它。

我应该有 2 个循环吗? - 1 将数据保存为对象,并在触发新对象时将其添加到我的数组中 - 1 在我的 DOM 中发布我的对象数组(但它不会每次都重新生成整个表,而不是只用新对象“更新”吗?)

我在这个思考过程中遇到了困难,所以如果你有建议,我们非常欢迎!

到目前为止我有:

1 - 对象数组的声明

2 - 检索输入数据并将其分配给新对象的函数

3 - 将对象推送到数组的函数

4 - 点击时,功能: 调用函数创建对象 调用函数将对象添加到表中 将对象表转换为字符串以在 DOM 中发布

我有点纠结到底在哪里创建我的循环。

非常感谢您的帮助!

【问题讨论】:

  • 您应该将正在使用的代码添加为minimal reproducible example。这将使您更容易理解您的问题。
  • 请添加您的代码示例以获得更多详细信息,而不是这些冗长的解释。

标签: javascript arrays loops object


【解决方案1】:

根据您的描述,您正在尝试做这样的事情。

// Declare array
const arr = [];

// Cache elements
const input = document.querySelector('input');
const button = document.querySelector('button');
const result = document.querySelector('#result');

// Assign event listener to the button
button.addEventListener('click', handleClick, false);

// When the button is clicked..
function handleClick() {

  // Push the new value/object to the array
  arr.push(input.value);

  // Call the function to update the page
  updatePage();
}

function updatePage() {

  // `map` over the data in the array to return an
  // array of HTML strings, and join them up
  const html = arr.map(el => `<p>${el}</p>`).join('');

  // Set the innerHTML of the result element as the
  // string `html`
  result.innerHTML = html;
}
p { color: blue; border: 1px solid red;}
<input />
<button>Add</button>
<div id="result"></div>

所以实际上你只需要一个循环来创建你要添加到页面的 HTML。

【讨论】:

  • “但它不会每次都重新生成整个表,而不是只用新对象“更新”” - 就像你的答案一样。
  • 是的,它每次都会绘制表格。所以呢?由于问题中没有包含任何代码,因此无法反馈 OP 可能编写或未编写的代码,但考虑到所涉及的数据集可能很小,这是解决问题的好方法。
  • @Andreas 和 Andy,感谢您的回复!我想我在这一点上真的很困惑,因为我这几天一直在绕圈子。但是,我想知道如何在页面加载时显示现有的数组 cmets,在有人添加导致数组更新的评论之前,但我想这可能是一个单独的事件,它不是由评论按钮触发而是在页面加载时触发,对吗?
  • “关于 OP 可能编写或未编写的代码,因为问题中没有包含任何内容” - 这应该会触发您的“关闭”投票,而不是原始投票猜测为答案。
  • 是的,它触发了我的有用评论,要求 OP 添加代码。
猜你喜欢
  • 2012-02-22
  • 2020-03-24
  • 2017-07-17
  • 1970-01-01
  • 2021-04-09
  • 2011-07-10
  • 2021-05-29
  • 2021-10-02
  • 1970-01-01
相关资源
最近更新 更多