Quiero poder hacer clic en un elemento y luego, dependiendo de si tiene un nombre de clase específico, hacer algo.
Esto es lo que tengo hasta ahora:
<div class="my-class" onclick="myFunction()"/> function myFunction() { if (element.classList.contains("my-class")) { //do something } }¿Dónde me estoy equivocando?
Debe pasar el evento de clic y luego obtener el elemento de destino, que en este caso es el elemento en el que se hizo clic.
function myFunction(event) { if (event.target.classList.contains("my-class")) { alert("I Do things becuase i have (my-class)") } } <button class="my-class" onclick="myFunction(event)">Click me</button> <br/> <br/> <br/> <br/> <button onclick="myFunction(event)">I Do nothing</button>Como @collapsar mencionó en el comentario, el element no está configurado. Le recomiendo que use addEventListener y event.target .
document.getElementById("your-element").addEventListener("click", () =>{ if (event.target.classList.contains("my-class")) { console.log("your-element has \"my-class\" class") } }) <div id="your-element" class="my-class">Click</div>Cuando el elemento HTML se represente estáticamente, debe considerar dos cosas:
HTML
<div class="my-class" />JavaScript
function myFunction(event) { var element = event.target; if (element.classList.contains("my-class")) { //do something } } document.addEventListener("DOMContentLoaded", function(event) { // DOM is ready const elements = document.getElementsByClassName("my-class"); for (let i = 0; i < elements.length; i++) { elements[i].addEventListener('click', myFunction); } });