I don't want to use jquery for this small task.
HTML
<form action="" method="post" >
<input type="button" id="btn_1" class="cls_btn" value="Click Me" />
<input type="button" id="btn_2" class="cls_btn" value="Click Me" />
<input type="button" id="btn_3" class="cls_btn" value="Click Me" />
</form>
javascript
I want id of button when it clicked.
my js code looks like
<script >
document.getElementsByClassName('cls_btn').onclick = function(){
alert(this.id);
};
</script>
I don't want to use jquery for this small task.
HTML
<form action="" method="post" >
<input type="button" id="btn_1" class="cls_btn" value="Click Me" />
<input type="button" id="btn_2" class="cls_btn" value="Click Me" />
<input type="button" id="btn_3" class="cls_btn" value="Click Me" />
</form>
javascript
I want id of button when it clicked.
my js code looks like
<script >
document.getElementsByClassName('cls_btn').onclick = function(){
alert(this.id);
};
</script>
Share
Improve this question
asked Sep 30, 2013 at 10:44
Ekramul HoqueEkramul Hoque
5,1234 gold badges32 silver badges31 bronze badges
4 Answers
Reset to default 9document.getElementsByClassName
returns a list of DOM objects. Applying .onclick
to a collection of html items results in nothing. No error is thrown but you'll not see the expected result anyway.
Try this:
var buttons = document.getElementsByClassName('cls_btn');
for (var i = 0; i < buttons.length; i++){
buttons[i].onclick = function(){ alert(this.id) };
}
See here: JSFiddle
I don't want to use jquery for this small task.
Note that jQuery can handle the same loop for you. No need to iterate over the list: just provide the selector and it will be done for you.
$('.cls_btn').click(function() {
console.log($(this).attr('id'));
});
See here: JSFiddle (jq)
getElementsByClassName
returns a list of DOM elements so you need to loop it and add an event listener to each:
var buttons = document.getElementsByClassName('cls_btn');
for (var i = 0; i < buttons.length; i++) {
buttons[i].addEventListener('click', function() {
alert(this.id);
});
}
Working demo
getElementsByClassName
returns an array. You need to loop over this to add the onlcick handler to each item:
var buttons = document.getElementsByClassName('cls_btn');
for (var i = 0; i < buttons.length; i++) {
buttons[i].onclick = function(){
alert(this.id);
};
}
Example - http://jsfiddle.net/RjUvQ/
you can use this | No jquery Demo
window.onload=function(){
var ele = document.getElementsByClassName('cls_btn');
for(var i=0;i<ele.length;i++)
{
addEventHandler(ele[i],'click',doWhatever);
}
}
function addEventHandler(elem,eventType,handler) {
if (elem.addEventListener) // for rest of browsers
elem.addEventListener (eventType,handler,false);
else if (elem.attachEvent) // for IE
elem.attachEvent ('on'+eventType,handler);
}
function doWhatever()
{
// do whaterver you want
alert(this.id);
}