【发布时间】:2017-12-10 05:17:11
【问题描述】:
我目前正在学习 Javascript,其中一章是“Mutation Observer”。我正在尝试创建一个简单的函数来检测是否将新 div 添加到页面并将其显示在控制台中。但是,我收到了这条消息,我很难找到解决这个错误的方法。如果有人能向我解释我做错了什么,我将不胜感激。提前谢谢!
未捕获的类型错误:无法在“MutationObserver”上执行“观察”:参数 1 不是“节点”类型。
到目前为止,这是我写的代码:
document.getElementById("Button").onclick = function(){
var Add = document.createElement('div');
Add.setAttribute("class", "Alpha");
Add.appendChild(document.createTextNode("Test"));
document.getElementById('Frame').appendChild(Add);
};
var Divs = document.querySelectorAll("div");
var Observer = new MutationObserver(function(mutations){
mutations.forEach(function(mutation){
for(var i = 0; i <= mutation.addedNodes.length; i++){
if(!(mutation.addedNodes[i] == null)){
console.log(mutation.addedNodes[i].innerHTML);
}
}
});
});
Observer.observe(Divs, {childList: true, subtree:true});
.Alpha{
color:red;
}
<button id="Button">Generate a new div</button>
<div id="Frame"></div>
【问题讨论】:
-
方法
observe在第一个参数中采用单个节点,而不是节点集合。
标签: javascript mutation-observers mutation mutation-events