gpt4 book ai didi

javascript - 比较两个相等 Node 的childNodes返回false,比较它们的innerHTML返回true,为什么?

转载 作者:行者123 更新时间:2023-11-30 08:25:27 25 4
gpt4 key购买 nike

我正在构建一个非常基本的函数来比较 Node.js 中的两个 DOM,我打算不仅要检测差异,还要确定确切的差异。令人惊讶的是,当我使用两个相等的 DOM(使用 jsdom 重建)时,比较 Node 的 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));

};

就我的目的而言,使用 childNodes 并不是绝对必要的,也许它不适用于这种类型的条件语句,但我仍然感到惊讶的是,如果这些 DOM 完全相同,它会返回 true。即使我使用“==”而不是“===”,我也会得到 false。

感谢您的帮助!

最佳答案

调用.innerHTML 返回序列化内容,这是基本的字符串匹配。

尝试比较 .childNodes 是在尝试比较对象,这在 javascript 中不是直接比较。

Object comparison in JavaScript

关于javascript - 比较两个相等 Node 的childNodes返回false,比较它们的innerHTML返回true,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46305590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com