Javascript 更新innerHTML时记住元素位置

Javascript 更新innerHTML时记住元素位置,javascript,dom,innerhtml,Javascript,Dom,Innerhtml,我通过一个函数接收到一个元素,然后在更新父元素的innerHTML后,通过替换其中的某些引用,我希望重新定位该元素 这是我正在做的一个例子: 函数更新(子级){ child.parentNode.innerHTML=child.parentNode.innerHTML.replace(/Stuff/,'Things'); child.innerHTML='再次添加更多内容'; console.log(子级); } 东西 更多的东西 编辑(反映新问题) 如果在处理父项时未修改子项id,则可以

我通过一个函数接收到一个元素,然后在更新父元素的innerHTML后,通过替换其中的某些引用,我希望重新定位该元素

这是我正在做的一个例子:

函数更新(子级){
child.parentNode.innerHTML=child.parentNode.innerHTML.replace(/Stuff/,'Things');
child.innerHTML='再次添加更多内容';
console.log(子级);
}


东西 更多的东西
编辑(反映新问题)

如果在处理父项时未修改子项
id
,则可以立即获取它,然后使用它获取新的引用

function update(child){
  var id = child.id // Get the id for later
  child.parentNode.innerHTML = child.parentNode.innerHTML.replace(/Stuff/, 'Things');
  child = document.getElementById(id) // Update child reference
  child.innerHTML = 'More stuff again.';
  console.log(child);
}
如果修改了
id
,您可以使用它再次获取
子项


旧答案

通过更改父元素的内部HTML,对子元素的引用将丢失。 您只需在修改
parent
的内部HTML后立即更新它即可

var child  = document.getElementById('child'),
parent = document.getElementById('parent');

// do something with child here

parent.innerHTML = 'Parent ' + parent.innerHTML;
child = document.getElementById('child') // Get new child reference
child.innerHTML = 'More stuff again.';

console.log(child);

child.innerHTML=child.innerHTML+'再次'
child.innerHTML+='再次'
@Alex不,不,你没有抓住要点,这只是一个例子。你想重写整个div吗?与其设置innerHTML并重新创建所有内容,你真正想做的是注入新的文本节点或其他什么,那么现有的东西仍然存在什么限制阻止你注入文本节点?注入元素是核心javascript。如果我收到了作为函数参数的元素,该怎么办?抱歉@JacquesMarais,但是如果你继续移动目标帖子,你希望我们如何给你一个像样的答案?给我们一个完整的答案,向我们展示你的完整问题,这样我们就可以建议你如何修复it@Pete是的,很抱歉。我没有考虑所有其他可能会干扰的事情。@Pete这就是为什么我特别说“更新父级的
innerHTML
后,记住元素以前的位置”。@Pete我已经更新了我的问题,使之更具体,这样更好吗?