【问题标题】:Javascript button that changes properties of html elements using DOM Events使用 DOM 事件更改 html 元素属性的 Javascript 按钮
【发布时间】:2023-04-06 15:48:01
【问题描述】:

我正在尝试制作一个按钮,只要用户单击该按钮,该按钮就会将段落元素的颜色更改为随机颜色。它似乎不起作用,我的文本编辑器(括号)告诉我我犯了 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);

提前致谢!

【问题讨论】:

  • “我的文本编辑器(括号)告诉我我犯了 12 个错误,但我并没有真正看到它” 它到底在告诉你什么?我的猜测是它与paragraphsEl.style.color有关
  • paragraphsEl 将是一个数组,一个数组没有样式。数组中的元素做
  • 内部 ESlint:文档未定义。 g 已经定义。 rgb 未定义。 b 未定义。
  • 在 JSlint 内部:缺少“使用严格”。 g 已经定义。 rgb 在定义之前使用。
  • 你真的应该只将整数放入rgb(...)。而不是做Math.random() * 255Math.floor(Math.random() * 255) 你还试图在一个元素数组上设置style.color。您需要遍历数组并分别在每个数组上设置style.color。此外,将style.color 设置为字符串,JS 将其解析为函数,因此它正在寻找一个名为rgb 的函数,该函数不存在。

标签: javascript html dom random dom-events


【解决方案1】:

这里很少有问题,我在上面的评论中列出了:

  • 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

【讨论】:

  • 感谢您指出这些。我发现我两次声明 g 并修复了它。我试过你的代码,但现在它给了我 15 个问题。
  • 我是否以错误的方式链接了 javascript?它一直告诉我文档未定义。
  • 您在 src 属性周围缺少引号:&lt;script type="text/javascript" src="script.js"&gt;&lt;/script&gt;
  • 不用担心。学习在 Chrome 中使用调试工具:developers.google.com/web/tools/chrome-devtools 您将为自己节省大量时间和精力!
  • 你推荐什么编辑器?方括号不断告诉我不存在的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-19
  • 2018-03-06
  • 1970-01-01
  • 2011-07-27
  • 2014-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多