我不明白为什么会收到此错误:


  未捕获的TypeError:无法读取未定义的属性'appendChild'


这是我的代码:

//create new div element, append it to the body, give it an ID and a Class.
const container_clause_1 = document.createElement("div");
document.body.appendChild(container_clause_1);
container_clause_1.setAttribute("id", "container_clause_1");
container_clause_1.classList.add("cc1");

console.log(container_clause_1);
//returns <div id="container_clause_1" class="cc1></div>"

const cClause1 = document.getElementById("container_clause_1");

console.log(cClause1);
//returns <div id="container_clause_1" class="cc1></div>"

const right_clause_1 = document.createElement("div");
console.log(right_clause_1); //returns <div></div>

document.cClause1.appendChild(right_clause_1); //Error occurs here!


我不明白在这种情况下未定义的内容。 cClause1被定义。还定义了right_clause_1。当然,这是一个空的div,但这就是我要尝试的操作-添加div,然后可以添加类和id等。

另外,我看不到任何错字。

另外,如果我替换document.cClause1.appendChild(right_clause_1);
使用document.body.appendChild(right_clause_1);可以正常工作。除了我不希望它在体内,而是在container_clause_1 div内。

我不能为此使用JQuery。 “为什么不”与这个问题并不真正相关。我有我的理由。只要了解我不能使用JQuery。



嗯,这是如此明显-在每个人都指出我做错了什么之后!感谢您的回答!

这就是向我指出的另一件事:

我可以消除变量cClause而只使用container_clause_1

所以我的代码更短!

const container_clause_1 = document.createElement("div");
document.body.appendChild(container_clause_1);
container_clause_1.setAttribute("id", "container_clause_1");
container_clause_1.classList.add("cc1");

const right_clause_1 = document.createElement("div");
container_clause_1.appendChild(right_clause_1);
right_clause_1.setAttribute("id", "right_clause_1");
right_clause_1.classList.add("r1");

最佳答案

为什么要有“文件”。在这一行?

document.cClause1.appendChild(right_clause_1);


当然,您只需要:

cClause1.appendChild(right_clause_1);

关于javascript - 新创建的div中的appendChild,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50438062/

10-11 20:28