当前位置:首页 > JavaScript

js实现计数

2026-02-02 01:51:17JavaScript

实现基本计数器

创建一个简单的计数器,可以通过按钮增加或减少数值。以下是一个完整的HTML和JavaScript示例:

<!DOCTYPE html>
<html>
<head>
    <title>计数器</title>
</head>
<body>
    <div>
        <button id="decrement">-</button>
        <span id="count">0</span>
        <button id="increment">+</button>
    </div>

    <script>
        let count = 0;
        const countElement = document.getElementById('count');
        document.getElementById('increment').addEventListener('click', () => {
            count++;
            countElement.textContent = count;
        });
        document.getElementById('decrement').addEventListener('click', () => {
            count--;
            countElement.textContent = count;
        });
    </script>
</body>
</html>

本地存储持久化

若需刷新页面后保留计数状态,可使用localStorage存储数据:

let count = localStorage.getItem('count') || 0;
const countElement = document.getElementById('count');
countElement.textContent = count;

document.getElementById('increment').addEventListener('click', () => {
    count++;
    countElement.textContent = count;
    localStorage.setItem('count', count);
});

document.getElementById('decrement').addEventListener('click', () => {
    count--;
    countElement.textContent = count;
    localStorage.setItem('count', count);
});

封装为可复用函数

将计数器逻辑封装为函数,便于多次调用:

function createCounter(initialValue = 0, storageKey = null) {
    let count = storageKey ? 
        parseInt(localStorage.getItem(storageKey)) || initialValue : 
        initialValue;

    return {
        get: () => count,
        increment: () => {
            count++;
            if (storageKey) localStorage.setItem(storageKey, count);
        },
        decrement: () => {
            count--;
            if (storageKey) localStorage.setItem(storageKey, count);
        }
    };
}

// 使用示例
const counter = createCounter(0, 'myCounter');
console.log(counter.get()); // 0
counter.increment();
console.log(counter.get()); // 1

使用闭包保护变量

通过闭包避免全局变量污染:

const Counter = (function() {
    let privateCount = 0;
    return {
        current: () => privateCount,
        increment: () => privateCount++,
        decrement: () => privateCount--
    };
})();

Counter.increment();
console.log(Counter.current()); // 1

高级特性:防抖与限制

添加防抖(Debounce)防止快速点击导致数值跳跃:

js实现计数

function debounce(func, delay) {
    let timeout;
    return function() {
        clearTimeout(timeout);
        timeout = setTimeout(() => func.apply(this, arguments), delay);
    };
}

document.getElementById('increment').addEventListener('click', debounce(() => {
    count++;
    countElement.textContent = count;
}, 300));

标签: js
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…