当前位置:首页 > 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实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

js图片轮播的实现

js图片轮播的实现

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

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…

js 实现图片轮播

js 实现图片轮播

基础实现方案 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS负责样式布局,JavaScript处理轮播逻辑。 <div class="…