我应该如何将滑块连接到 JavaScript 中的文章元素?

How should I connect my sliders to the article element in JavaScript?

我需要创建一个 HSL 滑块来更改 HTML 中文章元素的背景颜色。但是,我不知道如何将滑块连接到背景颜色。

我整天都在捣乱和阅读,但还没有想出解决办法,所以我在这里寻求帮助。

这是我现在拥有的相关 JavaScript 代码:

var article = document.getElementsByTagName("article");
var backgroundColor = document.getElementById("backgroundColor");

var hSlider = document.getElementById("myRange1");
var sSlider = document.getElementById("myRange2");
var lSlider = document.getElementById("myRange3");

var makeHslString = function hsl(ih, is, il) {
    var hslString = "("+ ih + ", " + is + "%, " + il + "%)";
    return hslString;
    console.log("The result of the function is " + hslString);
}

hSlider.addEventListener("click", function(ev) {
    // alert("got a click!");
})

hSlider.addEventListener("input", function(ev) {
    article.style = makeHslString(0, 0, 0);
    article.style.backgroundColor = hSlider.value;
})

滑块工作得很好,我知道它们与我的 JavaScript 一起工作,因为弹出了警报事件,但我不知道如何更改颜色。

我刚开始编程,所以答案可能非常简单,只是我一直想不出来。如有任何帮助,我们将不胜感激!

提前致谢,如果您需要查看更多代码,请告诉我!

这可能会帮助您到达那里:https://jsfiddle.net/1f72vdpL/getElementsByTagName 将 return 一个数组或集合,而不是单个元素。我认为通常最好使用 getElementByIdquerySelector.

var article = document.getElementById("article");


var color = { h: 0, s: 0, l: 0 }
var hSlider = document.getElementById("myRange1");
var sSlider = document.getElementById("myRange2");
var lSlider = document.getElementById("myRange3");

var makeHslString = function hsl(ih, is, il) {
    var hslString = "hsl("+ ih + ", " + is + "%, " + il + "%)";
    color.h = ih
    color.s = is
    color.l = il
    return hslString;
}


hSlider.addEventListener("input", ev => {
    article.style.background = makeHslString(
        parseInt(ev.target.value),
        color.s,
        color.l,
    );
})
sSlider.addEventListener("input", ev => {
    article.style.background = makeHslString(
        color.h,
        parseInt(ev.target.value),
        color.l,
    );
})
lSlider.addEventListener("input", ev => {
    article.style.background = makeHslString(
        color.h,
        color.s,
        parseInt(ev.target.value),
    );
})