Отображение количества кликов в JavaScript до подсчета
У меня есть простой скрипт, предназначенный для увеличения счетчика при каждом нажатии на изображение:
<script>
function clickCounter() {
if (typeof(Storage) !== "undefined") {
if (localStorage.clickcount) {
localStorage.clickcount = Number(localStorage.clickcount) + 1;
} else {
localStorage.clickcount = 1;
}
document.getElementById("counter").innerHTML = localStorage.clickcount;
} else {
document.getElementById("counter").innerHTML = "Your browser does not support web storage...";
}
}
</script>
HTML:
<img id="heart" src="../assets/images/redheart.png" title="Give Love!" onclick="clickCounter()"><p id="counter"></p>
Он работает нормально, но я хотел бы иметь возможность отображать количество до щелчка. Прямо сейчас счетчик отображается только после нажатия кнопки изображения.
Спасибо за любой вклад.
1 ответ
Решение
Если это не то, что вы собираетесь, пожалуйста, дайте мне знать.
Сначала несколько твиков:
По причинам доступности:
- Я сделал
<img>
<button>
(с фоновым изображением). Кнопки очень доступны и удобны для клавиатуры (вкладка, клавиша ввода и т. Д.) - Добавил
aria-label
на кнопку, так как она не содержит текстового содержимого
- Я сделал
Убрал немного JavaScript.
Поведение:
На первой странице загрузки...
Затем мы выполняем пять кликов с последующим обновлением страницы.
Примечание: эта демонстрация не будет работать здесь при переполнении стека из-за ограничений безопасности в редакторе. Посмотрите на созданную мной скрипку.
document.querySelector("button").addEventListener("click", clickCounter);
document.addEventListener("DOMContentLoaded", showValue);
let counter = document.getElementById("counter");
function showValue() {
counter.innerHTML = `Current count = ${localStorage.clickcount || 0}`;
}
function clickCounter() {
if (typeof(Storage) !== "undefined") {
if (localStorage.clickcount) {
localStorage.clickcount = Number(localStorage.clickcount) + 1;
} else {
localStorage.clickcount = 1;
}
showValue();
} else {
counter.innerHTML = "Your browser does not support web storage...";
}
}
button {
background-image: url(http://icons.iconarchive.com/icons/benzlee/free-christmas/512/heart-icon.png);
background-repeat: no-repeat;
background-size: 64px 64px;
background-color: transparent;
border: none;
display: inline-block;
width: 64px;
height: 64px;
cursor: pointer;
}
<button title="Give Love!" aria-label="Give Love!">
<div id="counter"></div>