我正在尝试将div元素添加到我的顶级div容器中,但由于某种原因我收到错误。
这是我的代码。这是一个按钮,一旦你点击,就应该在屏幕上添加一个框。
为了避免this.
的jQuery错误,我在我的类上定义了一个变量,名为self
var self = this;
所以这解决了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 HTMLDivElement]
”作为结果。 HTMLDivElement正是我需要的,对吧?它是一个节点,appendChild()需要一个节点元素。所以每个人都是正确的。但事实并非如此。为什么呢?
答案 0 :(得分:0)
在我看来(我可能正在读错了,你必须发布divGenerator的内部让我确定)你的问题只是一个命名错误......如果你愿意的话会输入错误。在以下行中:
self.containerDiv.parentNode.appendChild(self.newContainer.divContainer);
我注意到您在divContainer
上呼叫containerDiv
而不是self.newContainer
。除非您还将某个属性定义为divContainer
,否则我猜测您只需将属性调用的名称更改为containerDiv
,就像其他代码中的情况一样。
边栏:我注意到你提到了
为了避免
this
的jQuery错误,我在我的类上定义了一个变量,名为self
据我所知,没有这样的错误"在jQuery中。相反,您在使用this
时遇到了混淆,this
是一个引用当前函数上下文的关键字(即您当前正在操作的对象)。
实际上,您的解决方案是JavaScript中的常用习惯用法,允许您通过在外部作用域中分配给this
的变量来引用封闭的上下文。我建议您阅读this article,以澄清您对{{1}}结构的理解以及如何使用它。