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
功能显示(自){
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
功能显示(自){
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()”
。请参阅以了解如何执行此操作。这是不可能的,因为元素是自动生成的,有时也会删除一些元素。所以我不能自己设置索引,这是不可能的,因为元素是自动生成的,有时也会删除一些。因此,到目前为止,我无法自行设置符合我要求的索引。谢谢:)到目前为止,这正是我想要的。谢谢:)谢谢你帮了我,这对我也有用!不过,我会坚持另一个答案,因为它的代码少了一点。无论如何谢谢你@马克斯施莱萨:没关系。我很高兴我能以任何方式提供帮助。祝你今天愉快。:-)谢谢你帮助我,这对我也很有用!不过,我会坚持另一个答案,因为它的代码少了一点。无论如何谢谢你@马克斯施莱萨:没关系。我很高兴我能以任何方式提供帮助。祝你今天愉快。:-)