[英]Find Element by onclick function?
I am wondering if it is possible to find an element by the onclick function? 我想知道是否有可能通过onclick函数找到一个元素?
For example: 例如:
<a class = "calculator" onclick = add(number1,number2);
<a class = "calculator" onclick = add(number2, number3);
And I want to get the first one and the only difference is the onclick function so I thought thats the way I could differ them. 我想获得第一个,唯一的区别是onclick函数,所以我认为这就是我可以区分它们的方式。 Looks so far like this: 看起来像这样:
var elements = document.getElementsByClassName("calculator");
console.log(elements);
for (var i = 0; i < elements .length; ++i) {
elementsSpecific = elements[i]. //The missing part
console.log(delementsSpecific);
}
您可以使用获取onclick功能
elements[i].getAttribute('onclick');
You can, though I wouldn't recommend it. 你可以,虽然我不推荐它。 It's faster to use different ids. 使用不同的ID更快。 However, if you really want to do it this way... 但是,如果你真的想这样做......
var link = document.querySelector('a[onclick="add(number1,number2)"]');
If you don't understand it, read about querySelector 如果您不理解它,请阅读querySelector
This is a pretty poor way of targeting elements (what if the onclick value changes?) but if it's all you've got then you can use an attribute selector and querySelector
: 这是一种非常糟糕的定位元素的方法(如果onclick值改变了怎么办?)但是如果它是你所有的,那么你可以使用属性选择器和querySelector
:
var el = document.querySelector('a[onclick="add(number1,number2);"]');
I would definitely exhaust other avenues of selection before resorting to this, however. 然而,在采取这种做法之前,我肯定会用尽其他选择途径。
Without using js frameworks and making it for crossbrowser you can do this. 如果不使用js框架并将其用于crossbrowser,您可以执行此操作。
var as = document.getElementsByClassName('calculator');
var element = null;
for (var x = 0; x < as.length; x++) {
if (as[x].getAttribute('onclick') == 'add(number2,number3)') {
element = as[x];
break;
}
}
http://jsbin.com/feyaheji/1/edit?html,console http://jsbin.com/feyaheji/1/edit?html,console
document.querySelector
is the holy grail of finding elements in the DOM: document.querySelector
是在DOM中查找元素的圣杯:
HTML: HTML:
<a class = "calculator" onclick = "add(number1,number2);">First</>
<a class = "calculator" onclick = "add(number2, number3);">Second</>
JavaScript: JavaScript的:
var d2 = document.querySelector('.calculator[onclick*=number2][onclick*=number3]');
var d1 = document.querySelector('.calculator[onclick*=number1][onclick*=number2]');
console.log('Second', d2);
console.log('First', d1);
Notice the [onclick*=number2]
selector which matches elements with the attribute name onclick
and the value containing number2
注意[onclick*=number2]
选择器匹配具有属性名称onclick
元素和包含number2
的值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.