我只是想在单击时更改特定按钮的背景。我通过for循环生成了100个按钮(希望稍后制作一个简单的游戏)作为数组,同时分配一个id和一个不同的函数调用(基于循环的递增'i'值),我无法在单击时实际导致背景更改,而是出现以下错误:“未捕获的 TypeError:无法在 HTMLButtonElement.onclick (index.html:15) 的 showOptions (brain.js:31) 处读取属性‘setAttribute’为 null”
我的代码如下
var btn = [];
function generateBoard() {
for (i = 0; i < 100; i++) {
var modulo = i % 10;
var up, forLeft;
btn[i] = document.createElement("BUTTON");
var element = document.getElementById("body");
//btn[i].innerText = "CLICK ME";
element.appendChild(btn[i]);
btn[i].style.backgroundColor = "white";
btn[i].id = i;
btn[i].style.width = "50px";
btn[i].style.height = "40px";
btn[i].style.position = "absolute";
btn[i].style.top = modulo * 100;
btn[i].style.left = Math.floor(i / 10) * 100;
btn[i].x = (i + 10) % 10;
btn[i].y = Math.floor(i / 10);
document
.getElementById(btn[i].id)
.setAttribute("onclick", "showOptions(i)");
btn[i].innerText = btn[i].id;
console.log(
btn[i].id +
" " +
btn[i].style.left +
" " +
btn[i].style.top +
" " +
btn[i].x +
" " +
btn[i].y
);
}
}
generateBoard();
function showOptions(i) {
document.getElementById(i).setAttribute("style", "background-color: red;"); //this is line 31
}
在 console.log 中,我实际上得到了正确的数字 btn[i].id,很奇怪。
错误的 (index.html:15) 行很简单
</html>
长风秋雁
小唯快跑啊
斯蒂芬大帝
相关分类