当前位置:首页 > 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存储数据:

js实现计数

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);
});

封装为可复用函数

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

js实现计数

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)防止快速点击导致数值跳跃:

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
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 //…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-contain…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inp…