Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 指出当前在JS中使用的DOM类?_Javascript_Html_Dom - Fatal编程技术网

Javascript 指出当前在JS中使用的DOM类?

Javascript 指出当前在JS中使用的DOM类?,javascript,html,dom,Javascript,Html,Dom,我遇到了一个问题,我需要指出我在JS中使用的类的当前数量。例如,下面是我的代码: <div> <p class="child"><button type="submit" onclick="myfunction()">Click here</button></p> <p class="child"><button type="submit" onclick="myfunction()">Click here<

我遇到了一个问题,我需要指出我在JS中使用的类的当前数量。例如,下面是我的代码:

<div>
<p class="child"><button type="submit" onclick="myfunction()">Click here</button></p>
<p class="child"><button type="submit" onclick="myfunction()">Click here</button></p>
<p class="child"><button type="submit" onclick="myfunction()">Click here</button></p>
<p class="child"><button type="submit" onclick="myfunction()">Click here</button></p>
</div>

单击此处

单击此处

单击此处

单击此处

现在我知道,如果我键入
document.getElementsByCassName(“child”)
,它将为我提供一个数组,其中包含所提到的类p的所有可用用法。但是我想知道点击的确切按钮


就像单击第二个按钮p类一样,我希望函数返回数字2。同样,如果第三个按钮被点击,我希望数字3返回给我。有什么功能吗?我应该如何进行?我对JS完全陌生。

您可以将此
传递给函数,该函数是当前元素。
我添加了代码来查找所有
.child
元素,并找到与此按钮的父项匹配的索引,然后向其发出警报。
我建议使用
addEventListener
而不是onclick属性。
根据您正在执行的操作,我建议添加添加到DOM元素的
data=“n”
属性,或值的对象映射。但这将按原样起作用:

函数myfunction(el){
const index=Array.from(document.getElementsByClassName('child'))
.findIndex(x=>x==el.parentNode);
警报(索引);
}

单击此处

单击此处

单击此处

单击此处


您可以循环查看具有此类的元素列表,将事件侦听器添加到每个项中,以便可以正常访问函数中的数字。以下是一个例子:

let childs=document.getElementsByClassName('child');
for(设i=0;i

单击此处1

单击此处2

单击此处3

单击此处4


您尝试执行的操作在javascript中称为事件委派。您只需在父元素上添加事件侦听器,以避免向多个子元素添加事件处理程序

e.target
提供调用事件处理程序(此处单击)的元素。您可以使用各种属性获取有关该元素的信息,如
e.target.textContent
提供按钮文本

const container=document.querySelector(“.container”)
container.addEventListener('click',(e)=>{
console.log(例如target)
console.log(e.target.textContent)
})

点击这里1

点击这里2

点击这里3

点击这里4


谢谢您的时间,但是,我想要的是单击的号码。例如,如果在document.getElementsByCassName中获得一个包含4个对象的数组。我想指出的是,单击哪个按钮启动了该功能。例如,如果第二个按钮被点击,我想用“2”作为答案。@U guy仅供参考。这将使用与其他答案相同的概念。这个可能更接近我给你的那个,但他的要点是一样的。唯一的区别在于他绑定事件的方式,这在很大程度上是一种改进,以及一些库在封面下处理事件的方式。但是,除非您正在做一个更严肃的项目,例如,事件性能可能成为一个问题(这将解决),否则您最好只做更容易或更可读的事情。