首页 > 解决方案 > 发生onclick事件时如何将每个段落存储到javascript数组中?

问题描述

我已经尝试了以下代码。当用户单击任何段落时,该段落必须存储到 javascript 数组中。如果我单击另一段,则它还必须存储到任何数组中,而不会丢失最后一个。

function makeSelection(e) {
  var test = [];
  for (var i = 0; i < e.children[0].length) {
    test.push(test[i])
  }
  console.log(test)
}
<a href="#" onclick="makeSelection(this)">
  <p>This is p1</p>
</a>
<a href="#" onclick="makeSelection(this)">
  <p>This is p2</p>
</a>
<a href="#" onclick="makeSelection(this)">
  <p>This is p3</p>
</a>

标签: javascript

解决方案


  • 你的循环不见了;i++
  • 您正在将 test[i] 推向自身。这听起来不对

我相信你想这样做 - 我从你写的另一个问题中复制了你的 HTML。注意我无法再测试该段落,因为您在该段落中有其他标签

window.addEventListener("load", function() {
  var test = [];
  [...document.querySelectorAll(".container p")].forEach(function(para) {
    para.addEventListener("click", function(e) {
      var text = e.currentTarget.textContent;
      if (test.indexOf(text) === -1) test.push(text); // or !test.includes(text) (not IE)
      else alert("Already added");
      console.log(test)
    })
  })
})
#container p {
  cursor: pointer;
  text-decoration: underline;
}
<div class="container">
  <p>
    <b>Group:N</b>Code:1234<br/>
    <b>Session Type:</b>CS<br/>
    <b>Location:</b>Main Hall<br/>
    <b>Time:</b>14:00<br/>
    <b>Day:</b>Tuesday<br/>
    <b>Duration:</b>1hour<br/>
  </p>
</div>
<div class="container">
  <p>
    <b>Group:M</b>Code:98743<br/>
    <b>Session Type:</b>NP<br/>
    <b>Location:</b>Main Hall2<br/>
    <b>Time:</b>11:00<br/>
    <b>Day:</b>Monday<br/>
    <b>Duration:</b>1hour<br/>
  </p>
</div>


推荐阅读