我有一个我想用来操纵dom的js函数。为了便于阅读,假设我在元素B之前插入了元素A.元素A通过内联样式将display
设置为none
。我通过js更改display
属性并尝试插入,但是我得到一个错误“无法在'Node'上执行'insertBefore',新的子元素为空。操作dom时新的JavaScript子节点为空错误
作为一个完整性检查,我有两个警报,检查是否在DOM中存在的元素,他们都这样做。有人可以解释如何做到这一点,并告诉我如何完成这项任务。
document.getElementById('Parent_of_Element_A').style.display = 'block';
document.getElementById('Parent_of_Element_B').style.display = 'block';
if (document.getElementById('Element_B'))
alert('Found Reference Element');
if (document.getElementById('A'))
alert('Found Element to be added');
document.body.insertBefore('A', 'B');
请出示你的HTML。此外,'null'对于'visibility'属性不是有效的值。 – isherwood
错误消息非常明确:“insertBefore”的参数是“null”而不是有效的DOM元素。您发布的代码没有任何'insertBefore'调用,请使用发生错误的代码进行更新。 – Barmar
这条线似乎是问题:'document.body.insertBefore('A','B');' - 而不是传入你正在谈论的元素的ID,你应该传递一个对元素本身。 I.e - 'document.body.insertBefore(document.getElementById('idOfA'),document.getElementById('idOfB'));'其中idOfA和idOfB被这些元素的实际ID替换。 – enhzflep