【问题标题】:Background color from HTML5 colorpickerHTML5 颜色选择器的背景颜色
【发布时间】:2018-10-13 04:11:12
【问题描述】:

如何使用 HTML5 颜色选择器自动更改背景颜色? 目前,在我选择了我的颜色后,我必须单击按钮来更改背景颜色。我尝试使用 while (1) 循环来自动更改它,但它只会让我的浏览器崩溃。

https://jsfiddle.net/VortexP/eh4t17fv/4/

HTML:
<input type="button" id="fullscreenbutton" onclick="fcolor()"> Button
<br>
<input type="color" id="colorpickerbutton" name="color"> Colorpicker
<br>
<div id="overlay" ></div>Result

JAVASCRIPT:
function fcolor () {
var color = document.getElementById("colorpickerbutton").value;
document.getElementById("overlay").style.backgroundColor = color;
}

【问题讨论】:

    标签: javascript html color-picker


    【解决方案1】:

    您不需要任何无限的 while 循环。你需要攻击一个事件监听器来接收你的输入。

    <input type="color" id="colorPickerButton" name="color">
    
    document.querySelector("input").addEventListener("input", function() {
        document.body.style.background = this.value;
    });
    

    【讨论】:

      【解决方案2】:

      while(1) 循环导致浏览器崩溃的原因是 JavaScript 是单线程的。这意味着您的所有 JavaScript 都是按顺序运行的。您永远不能同时运行两个 JavaScript 函数。

      所以,while(1) 会阻止所有其他 JavaScript 执行,甚至会冻结网页本身,因为它会阻止所有浏览器事件。

      您要做的是仅在颜色输入发生变化时调用函数:)

      看起来像这样:

      HTML: &lt;input type="color" id="colorpickerbutton" name="color" onChange="changeColor(this.value)"&gt;

      JavaScript:

      function changeColor(newColor) {
           document.getElementById("overlay").style.backgroundColor = newColor;
      }
      

      【讨论】:

      • +1 用于解释,但 -1 用于内联 JavaScript,由于不良做法/代码分离,应避免使用。
      猜你喜欢
      • 1970-01-01
      • 2018-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 2021-12-19
      • 1970-01-01
      相关资源
      最近更新 更多