Javascript DOM引用变量的工作原理
全部: 我是DOM新手,我有一个关于DOM引用的问题,例如(假设我使用D3.js或jQuery): 当我打印DomeElement时,它仍然在控制台中显示一个对象,即使它已从DOM结构中删除 所以我想知道,为什么这个变量仍然可以访问DOM对象? 如何确定引用是否无效? 谢谢Javascript DOM引用变量的工作原理,javascript,dom,Javascript,Dom,全部: 我是DOM新手,我有一个关于DOM引用的问题,例如(假设我使用D3.js或jQuery): 当我打印DomeElement时,它仍然在控制台中显示一个对象,即使它已从DOM结构中删除 所以我想知道,为什么这个变量仍然可以访问DOM对象? 如何确定引用是否无效? 谢谢.remove()返回值(类似于javascript中的返回函数)。使用console.log时,会打印此值,但它不再存在于DOM中。HTML元素可以作为javascript(document.createElement)中的
.remove()
返回值(类似于javascript中的返回
函数)。使用console.log
时,会打印此值,但它不再存在于DOM中。HTML元素可以作为javascript(document.createElement
)中的数据节点存在
在这种状态下,它们作为数据存在,但没有添加到任何可见的地方.remove()
将元素从主体中剪切出来,并以其数据形式返回,然后控制台.log
将其打印。.remove()
返回值(类似于javascript中的返回
函数)。使用console.log
时,会打印此值,但它不再存在于DOM中。HTML元素可以作为javascript(document.createElement
)中的数据节点存在
在这种状态下,它们作为数据存在,但没有添加到任何可见的地方.remove()
将元素从主体中剪切出来
并以其数据形式返回,然后控制台.log
将其打印出来
所以我想知道,为什么这个变量仍然可以访问DOM对象
您在内存中检索了一个对对象的引用,只要您的变量在作用域中,它就会一直保留
你可以改变一个引用了它的对象,但是你不能破坏它(不是在JS中)
如何确定引用是否无效
没有“无效”引用这样的事情。如果您想检查元素是否仍然装载在DOM中,您可以尝试搜索它。如果它在那里-你会找到它,否则你不会找到的
所以我想知道,为什么这个变量仍然可以访问DOM对象
您在内存中检索了一个对对象的引用,只要您的变量在作用域中,它就会一直保留
你可以改变一个引用了它的对象,但是你不能破坏它(不是在JS中)
如何确定引用是否无效
没有“无效”引用这样的事情。如果您想检查元素是否仍然装载在DOM中,您可以尝试搜索它。如果它在那里-你会找到它,否则你不会找到它。那么,这是否意味着我可以重新加载我以前删除的元素?@Kuan“reload”是什么意思?意味着使用类似append()的东西将它重新链接到DOM结构。@Kuan你确实可以重新添加它。那么,这是否意味着我可以重新加载我以前删除的元素?@Kuan“reload”是什么意思意思是使用append()之类的东西将其重新链接到DOM结构。@Kuan您确实可以将其添加回去。
var domelement = d3.select("div#chart");
d3.select("div#chart").remove();
console.log(domelement);