所以我有这段代码:
window.onload = make_buttons ('"calc"');
function make_buttons (id) {
console.log (id);
var input = document.createElement("INPUT");
document.getElementById(id).appendChild(id.input);
for (var i = 0;i < 10; i++){
var btn = document.createElement ("BUTTON");
var t = document.createTextNode (i);
btn.appendChild(t);
document.getElementById(id).appendChild(id.btn);
}
};
基本上我在make_buttons ()
函数中插入div元素的id,然后它应该创建我要求它为我创建的所有内容。
但由于某种原因,这种方法会抛出一个错误,表示getElementById
被赋予NULL值。 console.log (id)
显示id为“calc”getElementByID
应该在()内部具有“calc”。为什么会这样?
此外,当我创建所有thoes按钮时,我是否可以在.onclick=
之后添加.append.Child()
以使其具有点击事件?
答案 0 :(得分:3)
1)控制台始终显示字符串的引号,这并不意味着您的字符串包含引号。您的ID为calc
,而不是"calc"
。
2)正如Felix所注意到的那样,你将window.onload
分配给函数的结果而不是函数。
替换
window.onload = make_buttons ('"calc"');
与
window.onload = function(){ make_buttons ('calc'); }
答案 1 :(得分:2)
id.input
document.getElementById(id).appendChild(id.input);
您正在传递字符串作为ID。但在父元素中附加id.input
是不正确的。
答案 2 :(得分:0)
这可能对您有用,请尝试在加载时使用正文
<body onload="make_buttons('calc');">
</body>
答案 3 :(得分:0)
您尚未将ID分配给您正在创建的输入。输入在文档中,但在您尝试访问时,它没有您传递的ID。