Javascript 未能执行';遵守';在';变异观察者';:参数1的类型不是';节点';
我正在创建一个脚本,用于为某些元素添加属性。我希望它能为未来工作 动态添加的元素。我想使用变异观察,但我遇到了以下错误:Javascript 未能执行';遵守';在';变异观察者';:参数1的类型不是';节点';,javascript,dom,mutation-observers,Javascript,Dom,Mutation Observers,我正在创建一个脚本,用于为某些元素添加属性。我希望它能为未来工作 动态添加的元素。我想使用变异观察,但我遇到了以下错误: 未能在“MutationObserver”上执行“observe”:参数1不是“Node”类型。 我使用的代码是: const langAdding=(标记)=>{ tag.setAttribute('lang','en-us'); } 常量目标=文档 常量回调=(突变,观察者)=>{ 突变。forEach(突变=>{ 开关(突变型){ “儿童名单”案例: for(突变常数。
未能在“MutationObserver”上执行“observe”:参数1不是“Node”类型。
我使用的代码是:
const langAdding=(标记)=>{
tag.setAttribute('lang','en-us');
}
常量目标=文档
常量回调=(突变,观察者)=>{
突变。forEach(突变=>{
开关(突变型){
“儿童名单”案例:
for(突变常数。添加节点){
如果(!el.hasAttribute(“lang”)){
el=LANGADING(el)
}else if(el.firstElementChild){
for(el.getElementsByTagName('p')的常量子级){
child=langAdding(child);
}
}
打破
}
})
}
const observer=新的MutationObserver(回调);
观察者,观察(目标{
儿童名单:是的,
属性:正确,
characterData:true,
子树:真
});
我真的不知道我是否做的每件事都对。如果发现错误,请帮助我问题中的代码工作正常,我只需要删除代码中的最后一行(observer.disconnect())我非常感谢@wOxxOm的帮助,他帮助我重做了回调。问题中的代码工作正常,我只需要删除代码中的最后一行(observer.disconnect())我非常感谢@wOxxOm的帮助,他帮助我重做了回调。你一定是缺少标签了吗?用
文档
代替文档。querySelector('body'))。还要注意,您的观察者会创建一个无限循环的自我造成的突变,以防止发生这种情况。您需要首先检查属性是否已经存在,或者在进行更改之前断开观察者的连接。在addedNodes上也没有forEach
方法。@wOxxOm我已经更新了代码。实际上,我没有控制台错误,但是脚本不起作用。我不太明白你的意思:在addedNodes上也没有forEach方法。我使用我的函数进行变异。addedNodes
-它们是新添加的元素,不是吗?代码现在看起来很好,但它不能解释addedNodes不是“平坦”的事实-此集合中的每个节点都可能是一个包含数千个节点的容器,因此您需要枚举这些节点,例如:,@wOxxOm我已经更新了代码,现在可以了吗?我使用按钮在页面上添加段落,但脚本仍然不起作用。您必须缺少标记?使用文档
而不是文档。querySelector('body'))。还要注意,您的观察者会创建一个无限循环的自我造成的突变,以防止发生这种情况。您需要首先检查属性是否已经存在,或者在进行更改之前断开观察者的连接。在addedNodes上也没有forEach
方法。@wOxxOm我已经更新了代码。实际上,我没有控制台错误,但是脚本不起作用。我不太明白你的意思:在addedNodes上也没有forEach方法。我使用我的函数进行变异。addedNodes
-它们是新添加的元素,不是吗?代码现在看起来很好,但它不能解释addedNodes不是“平坦”的事实-此集合中的每个节点都可能是一个包含数千个节点的容器,因此您需要枚举这些节点,例如:,。@wOxxOm我已经更新了代码,现在可以了吗?我使用按钮在页面上添加段落,但脚本仍然不起作用。