javascript - 发生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>
解决方案
- 你的循环不见了
;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>