未捕获的类型错误: 无法读取未定义的属性'style'?



所以我试着在一个网站上做一些游戏,它为你选择一个随机的部分。我不懂那么多javascript,所以我不知道这是什么意思。我从这里取了一些代码,我修改了它,但这发生了。它应该选择一个随机的部分,并将其突出显示为黄色。

// get all the elements from the body
var elems = document.body.getElementsByTagName("panel");
// specify a random index
var index = Math.floor(Math.random() * (0 - elems.length + 1)) + elems.length;
// get the random element
var randomElement = elems[index];
// do whatever
randomElement.style.backgroundColor = 'yellow';

问题在于获取随机索引。您正在尝试生成一个从0到元素的随机数。长度,但是这个代码Math.floor(Math.random() * (0 - elems.length + 1)) + elems.length;elems.length添加到随机生成的数字中,因此您的index将超过elems元素数组的长度。您需要生成一个最大为elems.length-1的索引。如果您将安慰您的index,那么您将看到问题所在。

假设html元素是

<div class="panel">

试试这个:

// get all the elements from the body
var elems = document.getElementsByClassName("panel");
// specify a random index
var index = Math.floor(Math.random() * elems.length);

也可以查看这里的Math.random()文档https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random

问题

❌这得到<panel>标签。

var elems = document.body.getElementsByTagName("panel");

✅改成这个。它得到<anyElement class="panel">,比如<div class="panel">

var elems = document.querySelectorAll(".panel");

在为元素设置样式前检查该元素是否存在

If(randomElement) {
randomElement.style.backgroundColor = 'yellow';
} 

相关内容

最新更新