从DOM元素获取javascript对象
假设我创建一个javascript类,如下所示:从DOM元素获取javascript对象,javascript,dom,Javascript,Dom,假设我创建一个javascript类,如下所示: class DivClass { constructor () { this.div1 = document.createElement('div') this.div1.id = 'div1' } } var divObject = new DivClass() parentDiv.appendChild(divObject.div1) 稍后,我将实例化该类,如下所示: class DivClass { cons
class DivClass {
constructor () {
this.div1 = document.createElement('div')
this.div1.id = 'div1'
}
}
var divObject = new DivClass()
parentDiv.appendChild(divObject.div1)
稍后,我将实例化该类,如下所示:
class DivClass {
constructor () {
this.div1 = document.createElement('div')
this.div1.id = 'div1'
}
}
var divObject = new DivClass()
parentDiv.appendChild(divObject.div1)
DIV最终出现在DOM中
如果我要在DOM中定位'div1'元素,比如说为了参数起见通过getElementById(),那么是否有必要返回负责创建它的javascript'divObject'呢
从我对javascript了解的很少,我有一种感觉,从javascript API到DOM的转换是单向的,这根本不可能
如果我把任何术语弄错了,我会提前道歉,但我对javascript有点陌生,仍然不完全理解DOM/API的关系
任何建议都将不胜感激。您可以向DIV元素添加对该对象的引用
class DivClass {
constructor () {
this.div1 = document.createElement('div')
this.div1.id = 'div1'
this.div1.divClass = this;
}
}
然后,您可以使用
document.getElementById(“div1”).divClass
来获取对象。根本不可能-正确,除非您建立一些框架来实现这一点。这是不可能的,但您有什么办法?内存中已经有了原始类,因此可以将其放入数据结构中并按名称调用。谢谢你的澄清。这应该是一个问题吗?它似乎没有遵循这个过程,您没有调用customElements.define()
,而且它不是HTMLElement
parentDiv.appendChild(divObject)
抛出未捕获的类型错误:未能在“节点”上执行“appendChild”:参数1不是“节点”类型。parentDiv.appendChild(divObject.div1)
工作正常……如果元素仍然存在于DOM中,垃圾收集器无法清理DivClass
实例的实例,这难道不会导致内存问题吗?我想这就是jQuery在遇到问题之前一直做的data()
。。这是出于设计,不是问题。如果您需要能够从DOM元素中获取对象,那么在DOM元素消失之前,不应该清理对象。这就像一个符咒。目前我没有做任何有用的事情,只是试图熟悉DOM和API之间的关系。非常感谢你的建议,也感谢你忽略了上面其他人强调的代码错误。我问了上面的代码错误。我几乎没有发布这个答案,因为我不明白你在做什么。