简体   繁体   English

通过onclick函数查找元素?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM