Моя программа javascript в основном создает серию изображений и случайным образом выбирает один и устанавливает свой src на определенный путь. Однако по какой-то причине код иногда застрял. В моей программе я вызываю element.parentNode одного из изображений, чтобы окружить его тегом привязки, но он вызывает ошибку в консоли, заявив, что он не может получить свойство «parentNode» неопределенной или нулевой ссылки, несмотря на то, что что иногда код фактически выполняется иногда без каких-либо изменений кода. Я должен обновлять несколько раз, прежде чем мне посчастливится, чтобы ошибка не была выбрана, а остальная часть кода выполнялась плавно. Вот мой код:Невозможно получить свойство «parentNode» неопределенной или нулевой ссылки
var id = generateRandom(325);
var el = document.getElementById(id.toString());
var anchor = document.createElement("a");
var nextPage = "level" + (level + 1).toString() + ".html";
if (level == 3) {
nextPage = "win.html";
}
anchor.setAttribute("href", nextPage);
el.parentNode.insertBefore(anchor, el); // line 54
Ошибка:
SCRIPT5007: Unable to get property 'parentNode' of undefined or null reference
scripts.js (54,2)
EDIT: обновляется целая функция
var div = document.getElementById("images");
var time = parseInt(document.getElementsByClassName("timer")[0].innerHTML);
var level = getLevel(time);
var rows = 13;
var cols = 23;
for (var i = 1; i <= rows; i++) {
var marquee = document.createElement("marquee");
marquee.setAttribute("scrollamount", 30);
for (var j = 1; j <= cols; j++) {
var img = document.createElement("img");
img.setAttribute("src", getPath());
img.setAttribute("id", (i * j).toString());
img.setAttribute("width", "80px");
img.setAttribute("height", "70px");
marquee.appendChild(img);
}
div.appendChild(marquee);
}
var id = generateRandom(rows * cols);
var el = document.getElementById(id.toString());
var anchor = document.createElement("a");
var nextPage = "level" + (level + 1).toString() + ".html";
if (level == 3) {
nextPage = "win.html";
}
anchor.setAttribute("href", nextPage);
el.parentNode.insertBefore(anchor, el);
var input = document.createElement("input");
input.setAttribute("type", "image");
input.setAttribute("width", "80px");
input.setAttribute("height", "70px");
input.setAttribute("src", "resources\\asotigue.jpg");
el.parentNode.replaceChild(input, el);
anchor.appendChild(input);
generateRandom функция:
function generateRandom(n) {
return Math.floor((Math.random() * n) + 1);
}
Очевидно, что функция 'generateRandom()' иногда возвращает идентификатор, который не существует в вашей DOM. – slash197