У меня есть некоторые проблемы при расческе DOM, вызывающего два атрибута - id и name - когда в for-loop.javascript: ошибка объединения DOM «id» и «name»
У меня есть HTML раздел с таблицей, где каждая ячейка имеет свой собственный идентификатор, но тот же атрибут имени: <td id="p1" name="f" ></td> <td id="p2" name="f" ></td> ... <td id="p47" name="f" ></td>
Теперь я хочу, чтобы случайно поместить изображения в этих клетках с помощью следующей функции:
function begintest() {
var i;
var randnum;
var randnum2;
for(i=1;i<48;i++) {document.getElementById("p" + i).name="f";
for(i=1;i<22;i++) {
randnum = Math.floor(Math.random() * 6) + 1; //picture of one sort
randnum2 = Math.floor(Math.random() * 47) + 1; //random position between 1-47
while(document.getElementById("p" + randnum2).name=="t") { //check whether position taken
randnum2 = Math.floor(Math.random() * 47) + 1; //random position between 1-47
}
document.getElementById("p" + randnum2).name = "t"; //true
document.getElementById("p" + randnum2).style.backgroundImage = "url(i" + randnum + ".png)"; //put in image first sort
}
for(i=1;i<48;i++) { //picture of second sort
if(document.getElementById("p" + i).name=="f") { //if not filled with first sort
randnum = Math.floor(Math.random() * 26) + 7; //take second sort
document.getElementById("p" + i).style.backgroundImage = "url(i" + randnum + ".png)"; //put in image second sort
}
}
}
Но я всегда получаю информацию отладки:
TypeError: document.getElementById(...) is null for the functions where a DOM reference with 2 attributes is used, such as: if(document.getElementById("p" + i).name=="f")
Как это может быть? Есть ли другой способ справиться с этим?
Там нет ничего плохого с кодом * само по себе *. Если * document.getElementById * возвращает 'null', это означает, что он не нашел элемент. Попытка получить доступ к любому свойству «null» вызовет ошибку. – RobG
совершенно правый. Спасибо большое! – user2451428
Когда и где вы называете 'begintest()'? Он может быть вызван до того, как DOM будет готов. –