javascript - 使用 addClass/removeClass 创建点击事件、点击计数,并使用 localStorage 防止用户稍后再次点击

标签 javascript jquery html local-storage addclass

嘿,我正在尝试创建一个基本的类似小部件,它有一个可点击的图标和旁边的计数器。

使用 addClass/removeClass 单击时,图标将从空心变为填充心,并且单击事件已注册,并为单击旁边显示为数字的单击返回 +1。

这是我到目前为止所拥有的,但我遇到了一些麻烦:

<i id="addButton" onClick="clickME()" class="likeButton fa fa-heart-o"></i>
<p><a id="clicks">0</a></p>

<script>
     var clicks = 0;
    function clickME() {
        clicks += 1;
        document.getElementById("clicks").innerHTML = clicks;
 }
</script>

JSfiddle

计数器可以工作,但在第一次点击后继续计数。

其次,我在这里工作的类(class)变更不起作用。

<i class="likeButton fa fa-heart-o"></i>

<script>
    $(document).ready(function(){
    $('.likeButton').click(function(){
        $('.likeButton').removeClass('fa-heart-o');
        $(this).addClass('fa-heart');
    });

});
</script>

Heart class change - jsfiddle

我试图查看所有这些单独完成的示例,并使它们接近工作,但似乎无法将它们放在一起。我们将非常感谢您的帮助。

最佳答案

试试这个。基本上,每次单击元素时都需要切换类。

$(document).ready(function(){
    $('.likeButton').click(function(){
        $(this).toggleClass('fa-heart-o fa-heart');
    });    
});

https://jsfiddle.net/7ku2wwu6/2/

这是完整的解决方案:

$(document).ready(function(){
    var clicks = 0;
    $('.likeButton').click(function(){
        $(this).toggleClass('fa-heart-o fa-heart');
        $(this).hasClass("fa-heart") ? clicks++ : clicks-- ;      
        $("#clicks").text(clicks);
    });
});

https://jsfiddle.net/ut92yujh/5/

关于javascript - 使用 addClass/removeClass 创建点击事件、点击计数,并使用 localStorage 防止用户稍后再次点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33528677/

相关文章:

javascript - "Location " Node/javascript 中的属性

html - 为什么显示内联不起作用?

Javascript - 当我单击连接到函数的此按钮时没有任何反应

javascript - 使用 React 添加和删除 CSS 类

javascript - 保存 React 组件

javascript - 想设计与值相关联的滚动条

javascript - 删除表中所有相同 id tr

javascript - 是否有类似于 os.path.join 的内置 javascript 函数?

javascript - jquery如何实现分页

javascript - 如何在不同的函数中使用变量?