Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript appendChild返回无法读取未定义的属性“containerDiv”_Javascript_Jquery_Css - Fatal编程技术网

Javascript appendChild返回无法读取未定义的属性“containerDiv”

Javascript appendChild返回无法读取未定义的属性“containerDiv”,javascript,jquery,css,Javascript,Jquery,Css,我试图将一个div元素添加到我的顶级div容器中,但由于某种原因,我得到了一个错误 这是我的密码。这是一个按钮,一旦你点击,它应该会在屏幕上添加一个框 为了避免jQuery的bug,我在类的顶部定义了一个变量self 因此,这修复了jQuery错误 $(this.button).click(function() { self.newContainer = new divGenerator(); self.containerDiv.parentNode.appen

我试图将一个div元素添加到我的顶级div容器中,但由于某种原因,我得到了一个错误

这是我的密码。这是一个按钮,一旦你点击,它应该会在屏幕上添加一个框

为了避免jQuery的bug,我在类的顶部定义了一个变量self

因此,这修复了jQuery错误

$(this.button).click(function() {
        self.newContainer = new divGenerator();

        self.containerDiv.parentNode.appendChild(self.newContainer.divContainer);

    });
真正奇怪的是当我打印出来的时候

console.log("self.newContainer: "+self.newContainer.containerDiv);

我得到self.newContainer:[object htmldevelment]作为结果。我需要的正是一个HTML版本,对吗?它是一个节点,appendChild需要一个节点元素。所以一切似乎都是对的。但事实并非如此。为什么?

在我看来,我可能读错了,您必须发布divGenerator的内部内容,以便我确定您的问题只是命名错误。。。如果你愿意的话,这是一个打字错误。在以下行中:

self.containerDiv.parentNode.appendChild(self.newContainer.divContainer);
我注意到您在self.newContainer上调用的是divContainer而不是containerDiv。除非您还有一个定义为divContainer的属性,否则我猜您只需要将属性调用的名称更改为containerDiv,就像代码的其余部分一样

边栏:我注意到你提到

为了避免jQuery的bug,我在类的顶部定义了一个变量self

就我所知,jQuery中没有这样的错误。相反,您正在经历关于使用this的困惑,这是一个引用当前函数上下文的关键字,即您当前操作的对象


事实上,您的解决方案是JavaScript中的一个常见习惯用法,它允许您通过在外部范围中分配给它的变量来引用封闭上下文。我建议阅读本书,以澄清您对该结构的理解,以及如何使用它。

this.button的来源是谁?this.button=document.createElementbutton;你能发布divGenerator代码吗?@CaioTarifa如果我手动将divGenerator添加到屏幕上,或者换句话说,不是通过点击按钮,divGenerator工作得很好。我正在尝试在这里重现错误。。。考虑将代码放在
self.containerDiv.parentNode.appendChild(self.newContainer.divContainer);