javascript - 访问 JavaScript 错误的单个样式元素

标签 javascript html css arrays

我正在尝试使用 JS 构建一个颜色猜谜游戏。我使用了带有初始颜色列表的颜色数组。到目前为止,整个代码一直有效,直到我尝试在使用当前颜色单击每个方 block 时显示警报。

在控制台中我得到如下错误:

Uncaught TypeError: Cannot read property 'style' of undefined at HTMLDivElement. (color_game.js:25)

第 25 行指向此:

var clickedColor = squares[i].style.background;

在这里,我试图获取对数组中每个方 block 样式的引用。 (看下面的src)

它说 sth 在进一步检查时未定义。

我的完整代码附在下面: HTML:

<body>

  <h1>The Great <span id="colorDisp">RGB</span> Guessing Game</h1>
  <div id="container">
    <div class="square">

    </div>
    <div class="square">

    </div>
    <div class="square">

    </div>
    <div class="square">

    </div>
    <div class="square">

    </div>
    <div class="square">

    </div>
  </div>

  <script src="color_game.js" type="text/javascript"></script>

</body>

JavaScript 代码:

var colorArr = [
  "rgb(255, 0, 0)",
  "rgb(255, 255, 0)",
  "rgb(0, 255, 0)",
  "rgb(0, 255, 255)",
  "rgb(0, 0, 255)",
  "rgb(255, 0, 255)"
];

var squares = document.querySelectorAll(".square");
var pickedColor = colorArr[3];
var colorDisp = document.getElementById("colorDisp");
colorDisp.innerHTML = pickedColor;

for (var i = 0; i < squares.length; i++) {
  squares[i].style.background = colorArr[i];

  squares[i].addEventListener("click", function() {

    var clickedColor = squares[i].style.background;
    alert(clickedColor);

    if (clickedColor === pickedColor) {
      alert("CORRECT");
    } else {
      alert("WRONG COLOR!!!");
    }

  });
}

我试过这两行,但是我的代码没有执行:

var clickedColor = squares[i].style.background;

var clickedColor = this.style.background;

谁能告诉我如何在 JS 中访问数组的样式元素?

最佳答案

我做了 2 个小改动,它对我有用。

修改了 HTML 部分,为 <div> 添加了一些文本.例如

   <div id="container">
        <div class="square">
            A
        </div>
        <div class="square">
            B
        </div>
        <div class="square">
            C
        </div>
        <div class="square">
            D
        </div>
        <div class="square">
            E
        </div>
        <div class="square">
            F
        </div>
    </div>

然后修改行

var clickedColor = squares[i].style.background;

var clickedColor = this.style.background;

它现在对我来说工作正常。

关于javascript - 访问 JavaScript 错误的单个样式元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45469969/

相关文章:

javascript - 在较小的视口(viewport)中禁用 javascript 灯箱

javascript - Angular 可以为对象(不是对象列表)设置默认选项吗?

javascript - 用于触摸屏的 HTML Canvas 帮助

文档准备好后 jQuery width() 立即不正确?

html - 当你的 svg 在 "content: url(..)"时如何转换填充颜色

css - ionic 3 为每个设备导入字体

javascript - 如何更改所选元素的标签背景? javascript ?或PHP?

javascript - 将文件发送到 api 请求从 python 到 react-native javascript 转换代码

javascript - 从 Google 表格填充 HTML 表单

javascript - 水平 iScroll 不起作用