Javascript 如何获取已单击段落的内容?
我有10个段落,每个段落显示一个从1到10的数字。我需要一个函数,当点击段落时,读取其描述并将其存储在数组中。到目前为止,我设法做到了这一点:Javascript 如何获取已单击段落的内容?,javascript,html,events,onclick,Javascript,Html,Events,Onclick,我有10个段落,每个段落显示一个从1到10的数字。我需要一个函数,当点击段落时,读取其描述并将其存储在数组中。到目前为止,我设法做到了这一点: function readValue(p) { var text = document.getElementsByTagName('p')[0].innerHTML; console.log(text); } 但当我点击第5段时,它仍然会将1记录到控制台 如何更改它以获取实际单击的段落的内容?您正在阅读并打印的只是第一段的值。但是,您
function readValue(p) {
var text = document.getElementsByTagName('p')[0].innerHTML;
console.log(text);
}
但当我点击第5段时,它仍然会将1
记录到控制台
如何更改它以获取实际单击的段落的内容?您正在阅读并打印的只是第一段的值。但是,您需要读取单击段落的文本值 向事件处理程序传递一个对象,该对象具有一个
target
属性,该属性保存对生成事件的元素的引用
let para=document.getElementsByTagName(“p”);
[…para].forEach(elem=>elem.addEventListener('click',readValue));
函数读取值(e){
让text=e.target.textContent;
console.log(文本);
}
1
二,
三,
四,
5
文档。getElementsByTagName('p')[0]表示希望找到第一段,因此始终会记录第一段。我将通过事件委托解决这个问题,方法是将单击事件绑定到父级,然后检查事件.target
是否是一个段落。
如果以后以编程方式添加更多段落,那么通过委派事件,您也可以获得正确的段落
document.querySelector(“#content”).addEventListener('click',函数(事件){
如果(event.target.nodeName=='P'){
log(event.target.innerHTML)
}
})
第1款
第2款
第3款
第4段
第5段
第6段
第7段
您也应该共享您的html,这样我们就可以有一个工作代码段。对不起,这是上次尝试的遗留问题。它实际上是文本。您应该通过以下方式避免getElement。。。您应该使用querySelector(All)来代替它。然后可以使用addEventListener(“单击”,function(){})来监视单击。接下来使用innerHTML或类似的其他函数获取内容