Javascript 颜色迭代器不工作?

标签 javascript html css animation colors

首先,是的,我知道在 jQuery 中有一种更简单的方法来执行此操作,但我正在尝试学习如何在 Javascript 中手动执行此操作以更好地理解该语言。

我有一个 div,我想通过彩虹的多种颜色慢慢淡出。这是我到目前为止所拥有的:

<script type="text/javascript">
    var bar = document.getElementById("workbar");
    var x = 0;

    bar.onclick = change;

    function change() {
        requestAnimationFrame(color);
    }

    function color() {
        window.alert("color!");
        bar.style.background = "hsl(" + x + ", 100%, 50%);";
        if (x < 358) {
            x++;
            requestAnimationFrame(color);
        }

        else {
            x = 0;
            requestAnimationFrame(color);
        }
    }
</script>

我正在遍历 hsl 颜色系统的第一个数字,它将为我提供数百种颜色变化,但不是宇宙中每一个不必要的颜色阴影。

我点击它,没有任何反应。现在我知道它正在通过颜色功能,因为我把那个警告框放在那里然后它就消失了。我也知道它在颜色函数中循环,因为在你退出警告框后,另一个出现了。所以一定是它分配颜色的部分有问题。有什么想法吗?

最佳答案

去掉分号

"hsl(" + x + ", 100%, 50%);";
                          ^

(function () {

    var bar = document.getElementById("workbar"),
        x = 0;

    function color() {
        bar.style.background = "hsl(" + x + ", 100%, 50%)";
        x++; 
        if (x >= 358) {
            x = 0;
        }
        requestAnimationFrame(color);
    }

    function change() {
        requestAnimationFrame(color);
    }

    bar.addEventListener("click", change, false);

}());
<div id="workbar">Click Me</div>

关于Javascript 颜色迭代器不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27436786/

相关文章:

javascript - 将输入按钮的文本拆分为两行,在另一行之上

javascript - Date 对象在 Chrome 中有效,但在 Safari、Firefox 或 IE 中无效

javascript - 从数据库中获取的 html 图像图库 View

javascript - 所有主流浏览器都支持 HTML 5 吗?

html - 如何使用 JS/CSS/HTML 勾勒表格列

javascript - JQuery 验证插件 submitHandler 对我不起作用

javascript - 点击功能上的多个选择器,如何知道点击了哪个选择器?

javascript - 混淆了 Javascript 代码?

html - 如何让两个按钮排成一行?

html - 未封闭的 HTML 标签的正则表达式