Javascript 加载ajax后刷新DOM元素
下面是我遇到的问题的简要说明: 我从Javascript 加载ajax后刷新DOM元素,javascript,ajax,dom,refresh,Javascript,Ajax,Dom,Refresh,下面是我遇到的问题的简要说明: 我从 <container> <div id="foo"></div> </container> 然后重新加载原始文件 <container> <div id="foo"></div> </container> 但是我不能再使用javascript来瞄准#foo,因为javascript认为它是一个新元素 实际的代码显然要复杂得多,我需要在aja
<container>
<div id="foo"></div>
</container>
然后重新加载原始文件
<container>
<div id="foo"></div>
</container>
但是我不能再使用javascript来瞄准#foo
,因为javascript认为它是一个新元素
实际的代码显然要复杂得多,我需要在ajax加载后刷新整个DOM,这样我就可以使用以前存在的几个元素。(在评论和问题编辑中回答问题。转换为社区wiki答案。请参阅)
OP写道:
问题的出现是因为我正在创建一个对象,其中的元素作为变量,所以当我再次调用该变量时,它所代表的实际元素不再存在,只是一个具有相同id的元素
已解决:
感谢@felix在评论中的建议,我意识到实现这一点的方法是获取存储在对象变量中的元素id,并使用该id在ajax加载的内容中定位新元素:
从原始内容创建的My object变量:playlist.trackdiv
,它表示元素div#track1
当我稍后通过ajaxplaylist加载该div
时,trackdiv
不再代表div#track1
而是一个具有相同id的元素的全新实例。解决方案是使用对象的id,如playlist.trackdiv.I
d,然后使用该id来定位新元素:document.getElementById(playlist.trackdiv.id)
那么您要将#foo从dom中分离出来,稍后再重新附加它?您的javascript在哪里?当你只看到HTML时,调试javascript有点困难。你说的“target#foo”是什么意思
document.getElementById('foo')
如果元素在DOM中,则可以确定该元素是否有效。@Musa是的,我将用另一页替换容器的内容,然后将上一页重新加载回container@James:是的,完全正确。如果重新加载意味着将容器的内容设置为HTML,如container.innerHTML='..'代码>然后是,它将创建一个新元素。正如我所说,您可以使用getElementById
检索对新元素的引用,或者不将内容设置为HTML,而是将旧元素添加回DOM,如container.appendChild(old_foo)
其中old_foo
是对您已有的#foo
的引用。
<container>
<div id="foo"></div>
</container>