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

问题描述 投票:-1回答:1

我试图创建一个按钮,只要用户单击按钮,就会将段落元素的颜色更改为随机颜色。它似乎不起作用,我的文本编辑器(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);

提前致谢!

javascript html dom random dom-events
1个回答
0
投票

这里几乎没有错,我在上面的评论中列出:

  • paragraphsEl是一个数组,你不能在数组上设置style.color,你需要迭代数组中的每个项来设置该值
  • style.color将取一个字符串值,你试图调用一个名为rgb的函数,它不存在,传入一个字符串来使这个工作
  • 使用RGB中的整数和`Math.floor(Math.random()* 255)

关闭,但你似乎忘记了一些事情是如何工作的。

请记住,将问题分解成碎片并确定在某些地方使用的数据类型将帮助您避免许多这些问题。

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

© www.soinside.com 2019 - 2024. All rights reserved.