首页 > 解决方案 > 鼠标单击按钮时更改悬停颜色

问题描述

当鼠标单击按钮时,我尝试更改悬停颜色,但通过浏览器出现错误,请检查以下内容。

浏览器结果:

VM898 home.php:62 Uncaught TypeError: Cannot read property 'link-privacy-policy' of undefined
    at HTMLAnchorElement.<anonymous> (VM898 home.php:62)
    at HTMLAnchorElement.handle (jquery-3.4.0.js:5707)
    at HTMLAnchorElement.dispatch (jquery-3.4.0.js:5233)
    at HTMLAnchorElement.elemData.handle (jquery-3.4.0.js:5040)

jQuery代码

<script>
    let color_count = 0;
    let colors = [{
        "name": "blue",
        "btn-change-color": "#7f8ff4",
        "btn-start": "#7f8ff4",
        "link-privacy-policy": "#7f8ff4"
    },
        {
            "name": "orange",
            "btn-change-color": "#f8d745",
            "btn-start": "#f8d745",
            "link-privacy-policy": "#f8d745"
        }];
    let btnChangeColor = document.getElementsByClassName("btn-change-color");
    let btnStart = document.getElementsByClassName("btn-start");
    let linkPrivacyPolicy = document.getElementsByClassName("link-privacy-policy");
    $(".btn-change-color").click(function () {
        $(btnChangeColor).css("background", colors[color_count]["btn-change-color"]);
        $(btnStart).css("background", colors[color_count]["btn-start"]);
        $(linkPrivacyPolicy).hover(function () {
            $(this).css('color', colors[color_count]["link-privacy-policy"]);
            $(this).css('border-bottom', '1px solid ' + colors[color_count]["link-privacy-policy"]);
        })
        color_count++;
    });
</script>

注意:第 62 行以此行开头:
$(this).css('color', colors[color_count]["link-privacy-policy"]);

标签: javascriptjquery

解决方案


有时,解读错误消息可能会令人困惑:

 Cannot read property 'link-privacy-policy' of undefined

这实际上意味着以下代码...

 colors[color_count]["link-privacy-policy"]

...引发错误,因为colors[color_count]计算结果为undefined- 因此该值自然没有属性link-privacy-policy

@Robin Zigmond 的评论(在我输入这个答案时添加)可以解释你为什么打undefined


推荐阅读