Estoy creando una aplicación de tareas sencillas y soy nuevo en JavaScript y estoy atascado en un problema.
Estoy tratando de ejecutar la función solo una vez para un ID de elemento en particular. me gusta,
Hay 5 divs
con IDs
1,2,3,4,5
. entonces estoy accediendo a ellos por className
y luego su ID.
Luego estoy almacenando su identificación en una variable y almacenándola para evitar que la función se ejecute con la identificación anterior.
página.html
function myFunction() { // Used for getting last element of all the classes var element = Array.from(document.querySelectorAll(".fields")).pop(); var previousId = element.id; var executed = false if (previousId === element.id) { if (!executed) { executed = true; console.log("Run only once"); console.log(previousId); } } }
<input type="text" id="1" oninput="myFunction(id)" class="fields"> <input type="text" id="2" class="fields">
¿Qué estoy tratando de hacer?
Estoy tratando de ejecutar la función solo una vez para el campo de entrada actual que el usuario está escribiendo.
Intenté eliminar if (previousId === element.id) {
y ejecutar solo if(!executed){
pero tampoco funcionó.
Pero cada vez que escribo en el campo de entrada, se ejecuta cada vez que presiono la tecla.
Lo he intentado muchas veces pero sigue sin funcionar. Cualquier ayuda sería muy apreciada. Gracias de antemano.
Puede guardar una matriz de identificación ya ejecutada y verificarla
let alreadyRunned = [] function myFunction(id) { if (alreadyRunned.includes(id)) { return; } alreadyRunned = [...alreadyRunned, id] console.log("Run only once"); console.log(id); }
<input type="text" id="1" oninput="myFunction(1)" class="fields"> <input type="text" id="2" class="fields" oninput="myFunction(2)">