Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未能执行';遵守';在';变异观察者';:参数1的类型不是';节点';_Javascript_Dom_Mutation Observers - Fatal编程技术网

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我已经更新了代码,现在可以了吗?我使用按钮在页面上添加段落,但脚本仍然不起作用。