附录返回的子项 无法读取未定义的属性“容器Div”

appendChild returning Cannot read property 'containerDiv' of undefined

本文关键字:属性 未定义 容器 Div 读取 返回      更新时间:2023-09-26

我正在尝试将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(( 需要一个节点元素。所以一切似乎都是对的。但事实并非如此,为什么?

在我看来

(我可能读错了,你必须发布divGenerator 的内部结构才能确定(你的问题只是一个命名错误......如果你愿意的话,这是一个错字。在以下行中:

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

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



侧边栏:我注意到你提到

为了避免 this 的 jQuery 错误,我在类的顶部定义了一个变量,叫做 self

据我所知,jQuery中没有这样的"错误"。相反,您正在对 this 的使用感到困惑, 是引用当前函数上下文(即您当前操作的对象(的关键字。

事实上,您的解决方案是 JavaScript 中的一个常见习惯用语,允许您通过分配给外部作用域中this的变量来引用封闭上下文。我建议阅读本文,以阐明您对this结构的理解以及如何使用它。