2012-02-09 2 views
0

Во-первых, я бы создал этот пример в JSFiddle, но они находятся в режиме только для чтения.Javascript получить элемент, который был нажат на основе ClassName

Я хотел бы получить конкретный элемент, который был нажат на основе класса.

var button = document.getElementsByClassName("mybutton"); 
button.onclick = function() { 
    //how do I reference the specific button that was clicked? 
}; 

 

<button class="myclass">Button 1</button> 
<button class="myclass">Button 2</button> 

Нет JQuery не отвечает, пожалуйста; это не вариант.

ответ

1

это не document.getElementByClassName, это document.getElementsByClassName.

См. Разницу?

Это легко упустить из вида:

document.getElementByClassName 
document.getElementsByClassName 
       ^

бывших не существует, если не определить его последние работает только в современных браузерах. getElementsByClassName вернет список узлов, который необходимо перебрать для присоединения прослушивателей событий к каждому узлу.

var i, 
    l, 
    buttons, 
    button; 

function clickHandler(e) { 
    console.log(this);//the button that was clicked on 
} 
buttons = document.getElementsByClassName('mybutton'); 
for (i = 0, l = buttons.length; i < l; i++) { 
    button = buttons[i]; 
    button.onclick = clickHandler; 
} 
+0

Я исправил свою орфографическую ошибку - спасибо за указание на это. –

0

Первый аргумент в обработчике событий будет ссылка на событие

var button = document.getElementByClassName("mybutton"); 
button.onclick = function(e) { 
    //e.Target is a reference to your button 
}; 
+0

Кажется, не работает для меня; Я предполагаю, что массив создан? –

Смежные вопросы