¿Cómo debo hacer que este botón funcione?
Agregué esta línea de JavaScript solo para verificar, pero también muestra una alerta sin siquiera hacer clic en los botones.
document.querySelector(".btnminus").addEventListener(onclick,alert("hello")); <div class="quantity d-inline-block"> <input class="btn btnminus d-inline" type="button" value="-" > <input type="number" class="form-control d-inline itemnumber" value="0" aria-label="Username" aria-describedby="addon-wrapping"> <input class="btn btnminus d-inline" type="button" value="+" >Dos cosas:
Primero, ¿qué es onclick ? El primer argumento de addEventListener es el nombre del evento como una cadena, que en este caso debería ser 'click' . Sospecho que la única razón por la que esto no arroja un error es porque onclick existe en el nivel de la window y, como todo, puede interpretarse como una cadena. Pero no es la cuerda que quieres. La cadena que desea es simplemente 'click' .
En segundo lugar, está ejecutando la alert inmediatamente y configurando su resultado como controlador de clics. Y no devuelve nada, por lo que el resultado no está undefined . Use una función para el controlador de eventos, no el resultado de una función. (A menos que el resultado de esa función sea en sí mismo una función destinada a ser un controlador de eventos, por supuesto).
Juntándolos:
document.querySelector(".btnminus").addEventListener('click', function () { alert("hello"); });