未捕获的类型错误:无法读取未定义的属性“样式”?

时间:2021-03-06 02:44:02

标签: javascript

所以我试图在一个网站上制作某种游戏,它会为您选择一个随机部分。我不太了解 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';

3 个答案:

答案 0 :(得分:1)

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

假设 html 元素是

index

试试这个:

<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); 的文档https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random

答案 1 :(得分:0)

在给它设置样式之前检查该元素是否存在。

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

答案 2 :(得分:0)

问题

❌这会得到 <panel> 标签。

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

✅改成这个。它得到 <anyElement class="panel"> 就像 <div class="panel">

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