使用DOM事件更改html元素属性的Javascript按钮

时间:2018-09-03 15:42:24

标签: javascript html dom random dom-events

我试图创建一个按钮,每当用户单击按钮时,该元素就会将段落元素的颜色更改为随机颜色。它似乎不起作用,我的文本编辑器(Brackets)告诉我我犯了12个错误,但我看不到它。 这是我在网页结尾处写的:

                    <button id="button1">Color Changer</button>
                </div>
            </div>
        </div>
        <script type="text/javascript" src=script.js></script>
    </body>
</html>

这是script.js:

var button1El = document.getElementById("button1");
var paragraphsEl = document.getElementsByTagName("p");
var colorChange = function () {
    var r = Math.floor(Math.random() * 255);
    var g = Math.floor(Math.random() * 255);
    var b = Math.floor(Math.random() * 255);
    for (var i = 0; i < paragraphsEl.length; i += 1) {
        paragraphsEl[i].style.color = rgb(r, g, b);
    }
}
button1El.addEventListener("click", colorChange);

谢谢!

1 个答案:

答案 0 :(得分:0)

这里有些错误,我在上面的评论中列出了

  • paragraphsEl是一个数组,不能在数组上设置style.color,需要遍历数组中的每个项目以设置该值
  • style.color将使用字符串值,您正尝试调用名为rgb的函数(该函数不存在),并传入字符串以使此工作有效
  • 在具有`Math.floor(Math.random()* 255)的RGB中使用整数

关闭,但是您似乎忘记了一些事情。

请记住,将问题分解成碎片并弄清楚在某些地方使用的数据类型将帮助您避免很多此类问题。

var button1El = document.getElementById("button1");
var paragraphsElements = document.getElementsByTagName("p");
var colorChange = function () {
  var r = Math.floor(Math.random() * 255);
  var g = Math.floor(Math.random() * 255);
  var b = Math.floor(Math.random() * 255);

  for(var i = 0; i < paragraphsElements.length; i++) {
    paragraphsElements[i].style.color = 'rgb(' + r + ', ' + g + ', ' + b + ')';
  }
}
button1El.addEventListener("click", colorChange);

这是一个演示工作代码的codepen链接,由于没有测试它,我犯了一些错误:

https://codepen.io/anon/pen/PdmKVd