Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 使用内联onclick-pure js no jQuery获取类元素的索引_Javascript_Class - Fatal编程技术网

Javascript 使用内联onclick-pure js no jQuery获取类元素的索引

Javascript 使用内联onclick-pure js no jQuery获取类元素的索引,javascript,class,Javascript,Class,所以我有一些类元素: <span class="show" onclick="show()">show</span> <span class="show" onclick="show()">show</span> <span class="show" onclick="show()">show</span> 纯javascript怎么可能做到这一点注意:我必须坚持使用无法更改的onclick=“show()” 我希望有人能

所以我有一些类元素:

<span class="show" onclick="show()">show</span>
<span class="show" onclick="show()">show</span>
<span class="show" onclick="show()">show</span>
纯javascript怎么可能做到这一点注意:我必须坚持使用无法更改的onclick=“show()”


我希望有人能提前帮助:)

如果您只是在寻找索引,您可以将其传递给show()方法

show
显示
显示

如果只是查找索引,可以将其传递给show()方法

show
显示
显示

您可以尝试以下方法:

function show() {
    var index = document.getElementsByClassName('show')[??];
    alert(index);
}
  • 使用
    addEventListener
    绑定事件处理程序。这将允许您使用
  • 若您仍然需要元素的索引,您可以在元素上循环或将节点列表转换为数组,然后使用
    array.indexOf
样品 Onclick

功能显示(自){
var span=document.querySelectorAll('.show');
console.log(Array.from(span).indexOf(self))
}
show
显示

show
您可以尝试以下方法:

function show() {
    var index = document.getElementsByClassName('show')[??];
    alert(index);
}
  • 使用
    addEventListener
    绑定事件处理程序。这将允许您使用
  • 若您仍然需要元素的索引,您可以在元素上循环或将节点列表转换为数组,然后使用
    array.indexOf
样品 Onclick

功能显示(自){
var span=document.querySelectorAll('.show');
console.log(Array.from(span).indexOf(self))
}
show
显示

show
只需获取所有元素的数组,并找到收到单击的当前元素

功能显示(el){
var els=Array.prototype.slice.call(document.getElementsByClassName('show'),0);
log(els.indexOf(event.currentTarget));
}
span 1
跨度2

span 3
只需获取所有元素的数组,并找到收到单击的当前元素

功能显示(el){
var els=Array.prototype.slice.call(document.getElementsByClassName('show'),0);
log(els.indexOf(event.currentTarget));
}
span 1
跨度2

span 3
如果您绝对坚持使用
onclick
属性(即使您真的不需要):

//获取live collection,因此只需调用一次
var liveCollection=document.getElementsByClassName('show');
功能展示(活动){
//将“.indexOf()的liveCollection转换为数组`
//要么是ES6
var显示=[…liveCollection];
//或ES5
var shows=Array.prototype.slice.call(liveCollection);
var index=shows.indexOf(event.currentTarget);
警报(索引);
}
.show{
光标:指针;
}
show
显示

如果您绝对坚持使用
onclick
属性,则显示
(即使您真的不需要):

//获取live collection,因此只需调用一次
var liveCollection=document.getElementsByClassName('show');
功能展示(活动){
//将“.indexOf()的liveCollection转换为数组`
//要么是ES6
var显示=[…liveCollection];
//或ES5
var shows=Array.prototype.slice.call(liveCollection);
var index=shows.indexOf(event.currentTarget);
警报(索引);
}
.show{
光标:指针;
}
show
显示

显示
你不能显示(这个)吗?你应该使用
addEventListener
。这样,您就可以使用
this
我可以做show(this),但是如何使用它来实现我想要的呢?我对编程有点陌生,所以我对eventListener和jQuery的问题是,我的元素是在我的用户在页面上执行某些操作时在iframe中生成的。这使得我很难使用jQuery.click和addeventlistener如果使用委托事件处理,则不需要对动态元素使用
onclick=“show()”
。有关如何执行此操作,请参见。您不能显示(此)吗?您应该使用
addEventListener
。这样,您就可以使用
this
我可以做show(this),但是如何使用它来实现我想要的呢?我对编程有点陌生,所以我对eventListener和jQuery的问题是,我的元素是在我的用户在页面上执行某些操作时在iframe中生成的。这使得我很难使用jQuery.click和addeventlistener如果使用委托事件处理,则不需要对动态元素使用
onclick=“show()”
。请参阅以了解如何执行此操作。这是不可能的,因为元素是自动生成的,有时也会删除一些元素。所以我不能自己设置索引,这是不可能的,因为元素是自动生成的,有时也会删除一些。因此,到目前为止,我无法自行设置符合我要求的索引。谢谢:)到目前为止,这正是我想要的。谢谢:)谢谢你帮了我,这对我也有用!不过,我会坚持另一个答案,因为它的代码少了一点。无论如何谢谢你@马克斯施莱萨:没关系。我很高兴我能以任何方式提供帮助。祝你今天愉快。:-)谢谢你帮助我,这对我也很有用!不过,我会坚持另一个答案,因为它的代码少了一点。无论如何谢谢你@马克斯施莱萨:没关系。我很高兴我能以任何方式提供帮助。祝你今天愉快。:-)