我的控制台出现错误
未捕获的TypeError:无法在读取null的属性'getAttribute' Object.game.new的Object.game.map.genererateBlocked(main.js:57) (start.js:17),位于HTMLButtonElement.onclick(index.html:56)
我不知道是什么原因导致此错误。
// main.js
//****************************** Initialise les obstacles ******************************//
game.map.genererateBlocked = function (nb) {
for (var i = 0; i < nb; i++) {
var x = Math.ceil(Math.random() * 10); //genere un nombre entre 1 et 10
var y = Math.ceil(Math.random() * 10);
var blocked = document.querySelector(".square[data-x='" + x + "'][data-y='" + y + "']"); // on recupere la case
if (blocked.getAttribute("type") === "") { // test si la case est vide
blocked.setAttribute("type", "blocked"); // on defini le type a blocked
blocked.classList.add("blocked"); // on attribue la classe blocked
} else {
i--; // si la case n'est pas vide on recommence l'iteration
};
}
}
// start.js
game.map.generateMap(); // on genere la carte
game.map.genererateBlocked(nbBlocked); // on genere les obstacles
game.map.generateWeapons(nbWeapon); // on genere les armes
game.players.generatePlayers(); // on genere les joueurs
// index.html
<button onclick="game.new();" id="newgame">Nouvelle Partie</button>
答案 0 :(得分:0)
很好,我找到了答案,这是要设置为7的要生成的数字
game.map.genererateBlocked = function (nb) {
for (var i = 0; i < nb; i++) {
var x = Math.ceil(Math.random() * 7);
var y = Math.ceil(Math.random() * 7);
var blocked = document.querySelector(".square[data-x='" + x + "'][data-y='" + y + "']"); // on recupere la case
if (blocked.getAttribute("type") === "") {
blocked.setAttribute("type", "blocked");
blocked.classList.add("blocked");
} else {
i--;
};
}
}
答案 1 :(得分:-1)
添加检查以确保确实找到了该块。修改行:
if (blocked.getAttribute("type") === "") { // test si la case est vide
收件人:
if (blocked && blocked.getAttribute("type") === "") { // test si la case est vide