Javascript 创建多个对象时动态更改这些对象上的文本

Javascript 创建多个对象时动态更改这些对象上的文本,javascript,Javascript,我想弄清楚,如果我有几个段落,我如何才能在单击特定对象时,仅对该段落发出警报 例如,以下是我的代码: HTML 这段代码的作用是,只弹出第一个元素。。我知道我可以做另一个功能,但我试着用一个来做,但我不知道。。 我知道一个ID是唯一的,不应该被多次使用,但是如果一个div是由用户动态创建的,并且每当用户单击它的特定div时,该div就会弹出一个提示。ID必须是唯一的。更改它们以使其唯一。您需要在每个元素上循环,并将事件单独添加到项目中 动态添加项目时,还需要将事件添加到项目中 //将侦听器添加

我想弄清楚,如果我有几个段落,我如何才能在单击特定对象时,仅对该段落发出警报

例如,以下是我的代码:

HTML

这段代码的作用是,只弹出第一个元素。。我知道我可以做另一个功能,但我试着用一个来做,但我不知道。。
我知道一个ID是唯一的,不应该被多次使用,但是如果一个div是由用户动态创建的,并且每当用户单击它的特定div时,该div就会弹出一个提示。

ID必须是唯一的。更改它们以使其唯一。

您需要在每个元素上循环,并将事件单独添加到项目中

动态添加项目时,还需要将事件添加到项目中

//将侦听器添加到已创建的元素中 […document.querySelectorAll'div'].forEachel=>{ el.addEventListener'click',MyFunction } 设i=10 //动态创建一些元素 setInterval=>{ 设el=document.createElement'div' el.textContent='StackOverflow'+i++ el.addEventListener'click',MyFunction document.body.appendChildel }, 2000 函数MyFunction{ console.logthis.innerHTML } 堆栈溢出1
StackOverflow 2在1 html页面中不能是相同的id。 我有个建议给你。 这是我的工作:

<div onclick="show__myDiv(this)">StackOverflow 1</div>
<div onclick="show__myDiv(this)">StackOverflow 2</div>
<script type="text/javascript">
    function show__myDiv(t){
        alert(t.innerHTML);
    }
</script>

不清楚你的问题是什么。您是否在询问如何使代码工作,即使它是无效的代码,也无法工作?对所有div使用相同的类,然后在具有此类的div上添加onclick,然后将其应用于以后添加的每个元素。。请看这里:对于这个问题,我认为您可能需要显示创建其他元素的代码,这样我们就可以帮助您避免创建无效代码-重复id属性,以及可能如何适当地绑定/响应单击事件。我忘了提到:或者像这里描述的那样,在所有这些div的现有父级上添加单击处理程序:OP在他们的问题中也提到了这一点,并注意到它们是由用户动态创建的。它们是如何创建的并不重要。它们必须是唯一的。>我知道ID是唯一的。我需要帮助的是,如何创建一个获取此ID的函数,即使它是unique@tryingsohard:不,你不知道,因为你有两个重复的ID,myDiv。将它们更改为myDiv1和myDiv2。这对先前的Div有效。。如果添加更多,并且此代码再次运行,它将添加多个单击处理程序。。如本文所述,可以将单个事件处理程序添加到所有divsI个人不同意该方法的现有父级。。如果您在我的评论中查看这篇文章,那么一个事件处理程序就足以作为所有div(例如另一个div)的父级。这就是为什么jquery使用live并弃用它,它会停止向每个子级添加事件处理程序。顺便说一句,在这一点上,我并不喜欢jquery,它几乎不需要,这正是我所需要的。完美的
document.getElementById("myDiv").onclick = function() { alert(this.innerHTML) };
<div onclick="show__myDiv(this)">StackOverflow 1</div>
<div onclick="show__myDiv(this)">StackOverflow 2</div>
<script type="text/javascript">
    function show__myDiv(t){
        alert(t.innerHTML);
    }
</script>