在 for 循环中组合 DOM 调用两个属性(id 和 name)时,我遇到了一些问题。
我有一个带有表格的 html 部分,其中每个单元格都有自己的 id 但具有相同的 name 属性:
<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(...) 对于使用具有 2 个属性的 DOM 引用的函数为 null,例如:if(document.getElementById("p" + i).name=="f")
怎么会这样?有没有其他方法可以处理它?