简体   繁体   中英

How to click an element // button with this kind of html code

<span id="cart-update">
   <span class="cart-button">add to cart</span>
</span>

how do I click this button

I have tried document.getElementById('cart-update').click(); and document.getElementsByClassName('cart-button').click();

On newer browsers you can do this to fire an event:

var event = new Event("click", {"bubbles":true, "cancelable":false});
element.dispatchEvent(event);

If you want support for older browsers, try this code that I made:

function fireEventOnElement(event_name, element, bubbles, cancelable) {
    if (typeof Event != "undefined") {
        console.log("Bla");
        var evt = new Event(event_name, {"bubbles":bubbles, "cancelable":cancelable});
        element.dispatchEvent(evt);
    } else if ("createEvent" in document) {
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(event_name, bubbles, cancelable);
        element.dispatchEvent(evt);
    } else {
        element.fireEvent("on" + event_name);
    }
}

Use it like this: fireEventOnElement("click", document.getElementById('cart-update'), true, false);

Edit: I changed code because initEvent is deprecated.

Try with addEventListener() and pass the event with a handler function:

getElementsByClassName() returns HTMLCollection . You have to use proper index:

 document.getElementsByClassName('cart-button')[0].addEventListener('click', function(){ alert('You have clicked'); }); 
 <span id="cart-update"> <span class="cart-button">add to cart</span> </span> 

Though I prefer querySelector() which will return the first matched element:

 document.querySelector('.cart-button').addEventListener('click', function(){ alert('You have clicked'); }); 
 <span id="cart-update"> <span class="cart-button">add to cart</span> </span> 

You can use onclick like the following:

 document.querySelector('.cart-button').onclick = function(){ alert('You have clicked'); }; 
 <span id="cart-update"> <span class="cart-button">add to cart</span> </span> 

getElementsByClassName return a collection , to get the element from it pass the index , and use addEventListener to add any event

 document.getElementsByClassName('cart-button')[0].addEventListener('click', function(e) { let getText = e.target.innerHTML; console.log(getText) }) 
 <span id="cart-update"> <span class="cart-button">add to cart</span> </span> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM