javascript - 将数组中的一项附加到一个 div

标签 javascript jquery html arrays underscore.js

我在一个页面上有一堆内容,包括下面的一些部分,但穿插在其他内容部分中。

<main>
  <section class="module content content-fact">
    <div class="container" id="0"></div>
  </section>

  <section class="module content content-fact">
    <div class="container" id="1"></div>
  </section>

  <section class="module content content-fact">
    <div class="container"></div>
  </section>
</main>

我有一组随机事实,我使用 Underscore.js --> _.shuffle() 函数将它们随机化。

const spiderFacts = [
    "Spiders are not insects. They are arachnids. Both arachnids and insects are arthropods.",
    "Spiders eat about 200 kilograms of insects per hectare per year.",
    "Spiders inhabit just about every corner of the globe.",
    "Charlotte in E.B. White’s Charlotte’s Web was a barn orbweaver spider, <em>Araneus cavaticus<em>."
]

const randomSpiderFacts = _.shuffle(spiderFacts);

我想向页面上的每个 section.content-fact > div.container 附加一个包含一个随机事实的 p 元素,但我不知道如何要做到这一点。

到目前为止我已经...

for (var fact in randomSpiderFacts) {
  var newElement = document.createElement('p');
  newElement.className = "fact";
  newElement.innerHTML = randomSpiderFacts[fact];
  $('.content-fact > .container').appendChild(newElement);
}

我觉得我正在以错误的方式解决这个问题,但我不确定如何回到正确的轨道上。谁能帮忙?

我一直在努力弄清楚如何做到这一点,希望我能清楚地解释我想做的事情。

最佳答案

你的代码在 appendChild() 函数之外是干净的,这不是 jquery 的一部分

此外,每个事实都将附加到每个 .fact div,因此通过循环 div 来反转函数,并使用 appendTo() 将事实内容附加到每个 div。

请看下面的片段:

const spiderFacts = [
    "Spiders are not insects. They are arachnids. Both arachnids and insects are arthropods.",
    "Spiders eat about 200 kilograms of insects per hectare per year.",
    "Spiders inhabit just about every corner of the globe.",
    "Charlotte in E.B. White’s Charlotte’s Web was a barn orbweaver spider, <em>Araneus cavaticus<em>."
]

const randomSpiderFacts = _.shuffle(spiderFacts);

$('.content-fact > .container').each(function(i,el){
  // check if not exceeding the array so return empty string
  var factContent = randomSpiderFacts[i] ? randomSpiderFacts[i] : "";
  $("<p>").addClass("fact").html(factContent).appendTo(el);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.0/underscore-min.js"></script>

<section class="module content content-fact">
  <div class="container" id="0"></div>
</section>

<section class="module content content-fact">
  <div class="container" id="1"></div>
</section>

<section class="module content content-fact">
  <div class="container"></div>
</section>

关于javascript - 将数组中的一项附加到一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50162226/

相关文章:

javascript - 在 Meteor 中使用 Chart.js 时出现 'Chart is not defined' 错误

javascript - 让 "submit"按钮响应按键而不是单击

javascript - 使用文件内容通过 Node JS 确定 MIME 类型

javascript - JSON 解析在解析字符串时偶尔会出错

JavaScript : addEventListener in for loops using number-ids

jquery - 如何使猫头鹰轮播中的中心图像大于其他图像?

javascript - JavaScript 中的命名空间是什么以及如何从命名空间导出方法?

javascript - map 中的可拖动标记

javascript - 如何使 material-ui-next 中的 AppBar 组件对滚动事件使用react

javascript - 使用 Web Audio Api 过滤音频