javascript - 六边形网格算法失败
问题描述
我创建了一个以六边形网格为前景的游戏。我创建了一个算法来显示代码,但收到以下错误:
未捕获的类型错误:无法在 hexagonPosition.js:34 处读取 null 的属性“appendChild”。
//hexagonPosition.js
var hexGrid = document.getElementById("hex-grid");
for (var rows = 0; rows < 20; rows++) {
var hexGroup = document.createElement("div");
hexGroup.id = ("hex-group" + rows);
for (var cols = 0; cols < 55; cols++) {
var hexTile = document.createElement("div");
hexTile.id = ("hex-tile-x" + cols + "-y" + rows);
hexTile.setAttribute("class", "hex-tile" + rows);
hexGroup.appendChild(hexTile);
}
hexGrid.appendChild(hexGroup);
}
//style.css
.hex {
clip-path: polygon(75% 10%, 100% 50%, 75% 90%, 25% 90%, 0 50%, 25% 10%);
width: 75px;
height: 75px;
}
.transparent {
visibility: hidden;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="..\CSS\style.css" />
</head>
<body>
<div id="WhatShouldResult">
<div class="hex-grid">
<div class="hex-group1">
<div class="hex-tile1">
</div>
<div class="hex-tile2">
</div>
<div class="hex-tile3">
</div>
</div>
<div class="hex-group2">
<div class="hex-tile2">
</div>
</div>
</div>
</div>
<div class="hex-grid"></div>
<script src="../JS/hexagonPosition.js"></script>
</body>
</html>
解决方案
问题是在下一行中,您通过 ID 获取元素。
var hexGrid = document.getElementById("hex-grid");
但是在您的 HTMLhex-grid
中是一个类,而不是一个 ID。
<div class="hex-grid">
如果您将该行 JavaScript 更改为以下内容,它应该可以工作。
var hexGrid = document.getElementsByClassName("hex-grid")[0];
这将获得第一个具有类名的元素hex-grid
。
或者,您当然可以将 HTML 更改为 ID 而不是类。
推荐阅读
- swift - FetchedResultsController 使用谓词排除集合中包含的结果
- sql - 对于格式化为 ISO w/timezone (127) 的字符串,SQL ISDATE 返回 false
- python - 将列表中的列表内的元组转换为列表
- ios - IOS 12 不需要的通信报告扩展在电话上工作但在消息应用程序上不工作
- excel - 将文本格式添加到 excel 生成的电子邮件中的特定文本
- python - Python填充缺失数据
- python - 在 Paraview 中合并来自多个文件的 PointData
- php - Laravel 从具有一个或多个类别的数据库中获取数据
- java - Libgdx box2d 主体与精灵重叠
- matlab - 在 MATLAB 中计算 QPSK(对于 AWGN 通道)的错误率