javascript - 在更改第一个输入之前,RGB 值不会更改

标签 javascript html

我的网页上有一个非常简单的脚本,允许用户更改元素的背景颜色;基于rgb slider 值

但是,为了让它更新元素 background rgb(),最上面的 input slider 值必须具有被改变了。

脚本应该的工作方式是,当任何 slider 值发生更改时,background rgb() 值为随之改变。

这是我的JavaScript:

var input = document.querySelector("input");

input.addEventListener("input", function(){

    var red = document.getElementById("red").value,
        green = document.getElementById("green").value,
        blue = document.getElementById("blue").value;

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

    display.style.background = "rgb(" + red + ", " + green + ", " + blue + ")";

});

还有我的HTML:

<div class="picker">
    Red <input type="range" min="0" max="255", step="1" id="red">
    Green <input type="range" min="0" max="255", step="1" id="green">
    Blue <input type="range" min="0" max="255", step="1" id="blue">

    <div id="display"></div>
</div>  

我觉得它可能与document.querySelector("input")有关,但是,我不确定,因为我对纯JavaScript还很陌生。

谢谢。

最佳答案

document.querySelector()返回单个元素,因此它适用于第一个输入。

您需要使用document.querySelectorAll()返回元素列表。您需要迭代它以将事件处理程序与单个元素绑定(bind)。

var input = document.querySelectorAll("input");
for (var i = 0; i < input.length; i++) {
    input[i].addEventListener("input", function() {
        var red = document.getElementById("red").value,
            green = document.getElementById("green").value,
            blue = document.getElementById("blue").value;

        var display = document.getElementById("display");
        display.style.background = "rgb(" + red + ", " + green + ", " + blue + ")";
    });
}
<div class="picker">
    Red
    <input type="range" min="0" max="255" , step="1" id="red">
    Green
    <input type="range" min="0" max="255" , step="1" id="green">
    Blue
    <input type="range" min="0" max="255" , step="1" id="blue">
    <div id="display">Yahooooooooooooo</div>
</div>

关于javascript - 在更改第一个输入之前,RGB 值不会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41505784/

相关文章:

javascript - jQuery 平滑滚动到新页面链接

javascript - Ajax请求从数据库获取数据并返回

javascript - 使用 Jest 手动模拟 React-Intl 进行快照测试

php - 如何使用 SMARTY 创建带有多维数组的 HTML 表格?

javascript - 如何从 JSON 对象获取简单数据

javascript - HTML5 地理位置 url 中的纬度/经度

php - 为什么 ajax 不适用于 POST 方法?

javascript - 如何在 Semantic UI React 中实现多选过滤器下拉列表

javascript - 检查多个输入空值不起作用

javascript - 电子邮件验证未捕获必填字段