【问题标题】:How to assign the innerHTML of array elements to the values in another array? [duplicate]如何将数组元素的 innerHTML 分配给另一个数组中的值? [复制]
【发布时间】:2020-09-25 19:52:20
【问题描述】:
const posterTitle2 = document.getElementById('poster-2-title');
const posterTitle3 = document.getElementById('poster-3-title');
const posterTitle4 = document.getElementById('poster-4-title');

const posterTitleList = [posterTitle1, posterTitle2, posterTitle3, posterTitle4];

const titleList = ["The Last Days of American Crime", "Becky", "The Rising Hawk", "7500"];

我想将每个posterTitle数组元素的innerHTML设置为titleList数组中的对应值:

例如

posterTitle1.innerHTML = "美国犯罪的末日"

我只能弄清楚如何对数组中的一个元素执行此操作(如下)。我知道会有一个简单的解决方案,但我就是看不到!

posterTitleList.forEach(element => element.innerHTML = titleList[0]);

【问题讨论】:

  • 阅读documentation of forEach。该方法有一个index 参数。
  • 恕我直言,这不应该是 id,而是所有标题的通用类 (e.g. .post-title)。然后遍历标题 (document.querySelectorAll(".post-title").forEach((element, index) => { ... })) 并使用索引从titleList 分配一个值(如果有足够的标题)
  • @user4642212 谢谢,这就是我要找的东西,但找不到!
  • @Andreas 谢谢,这个方法更干净!

标签: javascript arrays foreach nested-loops


【解决方案1】:

不如试试这种方式,给所有标题都赋予相同的类名,比如titles,并使用类名来访问所有标题,如果你不打算在任何地方使用它们,你可以完全省略 id。

const titleList = ["The Last Days of American Crime", "Becky", "The Rising Hawk", "7500"]

let titles = document.getElementsByClassName('titles')

for(let i = 0; i < titles.length; i++){
    titles[i].innerHTML = titleList[i]
}
<div class="container">
    <div class="titles" id='poster-2-title'></div>
    <div class="titles" id='poster-3-title'></div>
    <div class="titles" id='poster-4-title'></div>
</div>

【讨论】:

  • 谢谢,我使用了这个版本,它按预期工作,感谢您的时间
【解决方案2】:
posterTitleList.forEach(x=>{
x.innerHTML=titleList.shift()
})
console.log(posterTitleList)

jsfiddle

【讨论】:

  • 虽然此代码可以解决 OP 的问题,但最好包含关于您的代码如何解决 OP 问题的说明。通过这种方式,未来的访问者可以从您的帖子中学习,并将其应用到他们自己的代码中。 SO 不是编码服务,而是知识资源。此外,高质量、完整的答案更有可能得到支持。这些功能,以及所有帖子都是独立的要求,是 SO 作为一个平台的一些优势,使其与论坛区分开来。您可以编辑以添加其他信息和/或使用源文档补充您的解释
  • 代码是不言自明的,我知道是什么,而且我知道这不是编码服务,因为我不希望得到报酬
  • @ysf 的观点是不鼓励发布没有解释的代码,因为它对平台或未来的访问者没有什么长期价值。此外,仅代码答案倾向于鼓励将 SO 用作“只给我代码”问答,这在过去一直是一个问题,并且需要社区版主付出很多努力才能消除。 YSF 只是在指导您如何使我们的平台更好,如何保持 SO 滥用者的高质量,以及如何为社区提供最大的价值。添加解释有助于最大数量的访问者,并增加理解您提供的有用代码的时间。
  • SO 的政策是不鼓励仅使用代码的答案。 YSF 正在按照建议执行他的适度“职责”。你的 A 没有被删除,也没有被否决。取而代之的是,如果您希望最大限度地发挥您的贡献的好处,则会提供鼓励和指导。这样做还可以为其他人提供很好的例子,说明如何在编写答案时帮助大多数人。您可以随意忽略该建议。这不是对你的任何攻击。更像是指导,如果你愿意比你已经做的更多地帮助社区。我们非常感谢您的贡献。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多