javascript - Jquery中达到数值后如何重置递增变量

标签 javascript jquery

我正在创建一个极其简单的页面,当用户单击该页面时,背景和文本颜色将通过 6 个“主题”进行更改。我希望下面的循环在达到 6 后重置回 1。我知道这是一个不好的方法,但由于它不需要缩放,所以我不在乎。

我尝试在 if (clicks > 6) 内重置 clicks = 1,然后使用 return 退出范围,但我仍然遇到范围问题。这似乎遵循了网上的一些例子,但我看不出我错过了什么。看来要做到这一点真的很简单。

<script>
    var clicks = 1;
    $('.foo').click(function() {
        if (clicks == 1){
            $('body, #change' ).addClass('pagetheme1');
            $('p' ).addClass('pagetheme1');
        } else if (clicks == 2){
            $('body, #change' ).addClass('pagetheme2');
            $('p' ).addClass('pagetheme2');
            $('body, #change' ).removeClass('pagetheme1');
            $('p' ).removeClass('pagetheme1');
        } else if (clicks == 3){
            $('body, #change' ).addClass('pagetheme3');
            $('p' ).addClass('pagetheme3');
            $('body, #change' ).removeClass('pagetheme2');
            $('p' ).removeClass('pagetheme2');
        } else if (clicks == 4){
            $('body, #change' ).addClass('pagetheme4');
            $('p' ).addClass('pagetheme4');
            $('body, #change' ).removeClass('pagetheme3');
            $('p' ).removeClass('pagetheme3');
        } else if (clicks == 5){
            $('body, #change' ).addClass('pagetheme5');
            $('p' ).addClass('pagetheme5');
            $('body, #change' ).removeClass('pagetheme4');
            $('p' ).removeClass('pagetheme4');
        } else if (clicks == 6){
            $('body, #change' ).addClass('pagetheme6');
            $('p' ).addClass('pagetheme6');
            $('body, #change' ).removeClass('pagetheme5');
            $('p' ).removeClass('pagetheme5');
            clicks=1;
        }
        }
        ++clicks;
    });
</script>

最佳答案

使用模运算符

var clicks = 0;
$('.foo').click(function() {
    // ...
    clicks = (clicks + 1) % 7;
});

此方法的工作原理是将 (clicks+1) 除以 7 得到余数,即当 clicks 为 0-5 时为 clicks+1,或当 clicks=6 时为 0。

关于javascript - Jquery中达到数值后如何重置递增变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58736322/

相关文章:

javascript - 如何测试包含在 "withNamespaces"HOC 中且具有 "innerRef"的组件?

javascript - 如何使用 jquery 找到这个选择选项

jquery - 简单的 fadeOut/In 比我想象的更复杂?

JQuery - 重置切换状态

c# - 为什么我无法在 Razor 页面上获得正确的文本框值?

javascript - 使用 Firebase 作为 AngularJS 和 NodeJS 之间的中介是一个 'bad' 想法吗?

javascript - 需要帮助更改变量值以更改显示的消息

javascript - 在 JavaScript 中变量同时作为函数

javascript - 单击时,知道单击的元素是否是复选框?

javascript - bootstrap下拉菜单不下拉?