javascript attaching events

后端 未结 6 1025
有刺的猬
有刺的猬 2020-12-11 07:25

I\'ve seen that you can attach events like this

can you do the same

相关标签:
6条回答
  • 2020-12-11 08:06

    Sure, you only need to select your item and call it's correspondant callback function. p.e:

    document.getElementById('myButton').onclick = function(e) {
        // your code here
    }
    

    Or, without the inline function:

    document.getElementById('myButton').onclick = myObject.myMethod;
    

    https://developer.mozilla.org/en/DOM/element.onclick

    0 讨论(0)
  • 2020-12-11 08:14
    document.getElementById('myButton').onclick = function () {
            console.log('Inline event attach');
        };
    
        document.getElementById('myButton').addEventListener('click', function () {
            console.log('Using native addEventListener');
        }, false);
    
    0 讨论(0)
  • 2020-12-11 08:20

    It's similar to the onclick approach, and in fact uses the same event-handler, but is removed from the HTML:

    document.getElementById('myButton').onclick = function(){
        // do stuff
        myFunction();
    }
    

    If you don't have an id on the element you could also use:

    var inputs = document.getElementsByTagName('input');
    
    for (var i=0, len=inputs.length; i<len; i++){
        if (inputs[i].type == 'text'){
            // assuming you want to affect text-inputs in this case
            inputs[i].onclick = function(){
                // do stuff. In here 'this' refers to inputs[i] element
                myFunction();
            };
        }
    }
    

    An alternative approach, using Array.prototype.forEach(), with an array of elements created using Array.prototype.slice() and document.querySelectorAll():

    [].forEach.call(document.querySelector('input[type="text"]', yourFunctionName);
    

    This will execute the yourFunctionName() function for each <input /> element, of type="text", returned by document.querySelectorAll() passing that <input /> element into the function as this.

    You could also use addEventListener() in this case:

    document.getElementById('myButton').addEventListener('click', myFunction, false);
    

    And also in this situation, using document.querySelector() (as opposed to document.querySelectorAll()), which returns the first element that matches the passed-in selector, using CSS notation:

    // gets the element with an 'id' of 'myButton', binding the 'click' event-handler:
    document.querySelector('#myButton').addEventListener('click', myFunction, false);
    

    Or:

    // gets the first of the <input> elements, binding the 'click' event-handler:
    document.querySelector('input').addEventListener('click', myFunction, false);
    

    References:

    • Array.prototype.forEach().
    • Array.prototype.slice().
    • document.querySelector().
    • document.querySelectorAll().
    • EventTarget.addEventListener().
    0 讨论(0)
  • 2020-12-11 08:21

    Something like this:

      document.getElementById('myButton').onclick = function() {location.href='http://stackoverflow.com';return false;}
    
    0 讨论(0)
  • 2020-12-11 08:25

    Yes, you can (and should!).

    document.getElementById('myButton').onclick = myFunction;
    
    0 讨论(0)
  • 2020-12-11 08:28
    document.getElementById('myButton').onclick = function() { myFunction(); }
    
    0 讨论(0)
提交回复
热议问题