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

当我稍后通过ajax
playlist加载该
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>