Tengo una interfaz de usuario con 4 navegación: Home , Page 1 , Page 2 , Page 3
<ul class="nav nav-pills mt-3 mb-5 ml-5"> <li class="nav-item"> <a class="nav-link active" href="#">Home</a> </li> <li class="nav-item"> <a class="nav-link" onclick="visitLink('Page1')" href="page_1.html">Page 1</a> </li> <li class="nav-item"> <a class="nav-link" onclick="visitLink('Page2')" href="page_2.html">Page 2</a> </li> <li class="nav-item"> <a class="nav-link" onclick="visitLink('Page3')" href="page_3.html">Page 3</a> </li> </ul> <button type="button" onclick="viewResults()" class="btn btn-primary btn-lg btn-block mb-5"> View page visits results </button>Y una función que aumenta las veces que hacemos clic 3 navegaciones Página 1, Página 2, Página 3 separadas (yo uso la ruta es una clave, y las veces es un valor):
function visitLink(path) { if (localStorage.getItem(path) === null) { // Store localStorage.setItem(path, "0"); } localStorage.setItem(path, parseInt(localStorage.getItem(path)) + 1); return localStorage.getItem(path); }La función para mostrar el resultado de cada clic en cada página (no está completa, usé esto para depurar):
function viewResults() { alert("You visited Page time(s) " + visitLink('Page1')) }Pero cuando vi el resultado, aumentó el resultado en 2, no en 1 si hago clic en el botón Inicio (cuenta como 1 vez de hacer clic) para volver a ver el resultado. ¿Cómo puedo arreglar eso?
El resultado es dos porque está llamando a visitLink para recuperar el conteo, lo que también incrementa el conteo.
Dado que debe implementar la tarea con dos funciones , sugeriría agregar otro parámetro a la función visitLink que indique si se debe incrementar el conteo:
function visitLink(path, readonly) { if (localStorage.getItem(path) === null) { localStorage.setItem(path, "0"); } if(!readonly){ localStorage.setItem(path, parseInt(localStorage.getItem(path)) + 1); } return localStorage.getItem(path); } function viewResults() { alert("You visited Page time(s) " + visitLink('Page1', true)) }Estás llamando a la función que aumenta el contador aquí alert("You visited Page time(s) " + visitLink('Page1')) , cuando llamas a visitLink('Page1') el resultado pero también lo incrementas
Esto debería solucionarlo, aunque recomendaría una función getResult
alert("You visited Page time(s) " + localStorage.getItem('Page1'))