Daa*_*ten 1 javascript dom if-statement node.js
我正在构建一个非常基本的函数来比较Node.js中的两个DOM,我不仅要检测差异,还要确定确切的差异.令人惊讶的是,当我使用两个相同的DOM(使用jsdom重建)时,比较节点的childNodes在使用childNodes时返回false,而当我使用innerHTML时返回true.
const checkForUpdates = function(website) {
let oldDom = new JSDOM(website.storedPage.page);
oldDom = oldDom.window.document.querySelector('body');
let newDom = new JSDOM(website.newPage.page);
newDom = newDom.window.document.querySelector('body');
const startChecking1 = function(someDom, anotherDom) {
return someDom.childNodes === anotherDom.childNodes;
// This returns false
};
const startChecking2 = function(someDom, anotherDom) {
return someDom.innerHTML === anotherDom.innerHTML;
// This returns true
};
console.log(startChecking(oldDom, newDom));
};
Run Code Online (Sandbox Code Playgroud)
出于我的目的,使用childNodes并不是绝对必要的,也许它不适用于这种类型的条件语句,但我仍然感到惊讶的是,如果这些DOM完全相同,它将返回true.即使我使用'=='而不是'===',我也会变错.
感谢您的帮助!
调用.innerHTML
返回序列化内容,这是基本字符串匹配.
试图比较.childNodes
是试图比较javascript中不是直接比较的对象.