Javascript click event handler - how do I get the reference to the clicked item?

前端 未结 3 1864
生来不讨喜
生来不讨喜 2020-12-01 04:28

My HTML:

This turns green
This tur
相关标签:
3条回答
  • 2020-12-01 05:04

    event is an Event object which is created automatically when an event is fired. Note that you don't have to call it event (I tend to call it simply e). That Event object has a number of properties which describe the event it represents. In this case, the one you're interested in would be target, which shows the element that was the source of the event:

    function clickHandler(e) {
        var target = e.target;
    }
    

    Here's a working example.

    Unfortunately, it's never quite that simple. While the specification says it should be event.target, Internet Explorer likes to be different, and chooses to use event.srcElement, so you probably want to put in a check to make sure event.target exists! For example:

    function clickHandler(e) {
        var target = (e.target) ? e.target : e.srcElement;
    }
    
    0 讨论(0)
  • 2020-12-01 05:05

    I usually just name the clicked element in the argument list of the call to the click handler, something like (untested) this:

    <div id="x">
       <div id="button1" onclick="handle_click_event( this, 'green' )">This turns green</div>
       <div id="button2" onclick="handle_click_event( this, 'blue' )">This turns blue</div>
    </div>
    
    function handle_click_event ( obj, new_color ) {
      obj.style.backgroundColor = new_color;
    }
    

    Could that approach work for you?

    0 讨论(0)
  • 2020-12-01 05:08

    Why can't you do this?

    <div id="x">
       <div id="button1" onclick="clickHandler1()">This turns green</div>
       <div id="button2" onclick="clickHandler2()">This turns blue</div>
    </div>
    
    0 讨论(0)
提交回复
热议问题