最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Get clicked button's id by class name without jquery - Stack Overflow

programmeradmin0浏览0评论

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
Add a comment  | 

4 Answers 4

Reset to default 9

document.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);   
}
发布评论

评论列表(0)

  1. 暂无评论