2014-03-06 65 views
0

我想知道是否有可能通过onclick函数找到一个元素?通过onclick函数查找元素?

例如:

<a class = "calculator" onclick = add(number1,number2); 

<a class = "calculator" onclick = add(number2, number3); 

而且我想要得到的第一个和唯一的区别是的onclick功能,所以我想这就是我能区别他们的方式。看起来到目前为止是这样的:

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); 
} 
+0

我无法想像为什么您需要这样做。但为了大家的缘故,请勿使用内联事件处理程序:http://stackoverflow.com/questions/15792498/is-it-bad-practice-to-use-inline-event-handlers-in-html – Ian

回答

1

您可以通过使用

elements[i].getAttribute('onclick'); 
0

这是针对元素相当差的方式获得的onclick功能(?要是的onclick价值变动),但如果它的所有你有,那么你可以使用属性选择器和querySelector

var el = document.querySelector('a[onclick="add(number1,number2);"]'); 

我可是会采取这种,之前选择的绝对排放等途径。

1

你可以,但我不会推荐它。使用不同的ID会更快。但是,如果你真的想这样做,这样...

var link = document.querySelector('a[onclick="add(number1,number2)"]'); 

如果你不了解它,了解querySelector

+0

如果有没有ID?或者总是有一个ID? – user3361146

+0

id是一个属性,如果你把它放在那里,就像'onclick'属性一样。 –

0

不使用JS框架,使其成为跨浏览器,你可以做到这一点。

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

0

document.querySelector是在DOM发现元素的圣杯:

HTML:

<a class = "calculator" onclick = "add(number1,number2);">First</> 
<a class = "calculator" onclick = "add(number2, number3);">Second</> 

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); 

请注意[onclick*=number2]选择器匹配的元素的属性名称为onclick,其值为number2