我正在使用JSLint来完成JavaScript,并且在执行诸如比较语句内部之类的事情时,它会返回许多建议来替换==(两个等号)===(三个等号).idSele_UNVEHtype.value.length == 0if
有没有性能优势,以代替==用===?
任何性能改进都会受到欢迎,因为存在许多比较运算符
如果没有进行类型转换,是否会有性能提升==?
javascript equality operators equality-operator identity-operator
我们如何比较两个HTML元素是否相同?
我尝试过这件事,但没有运气
<div class="a"> Hi this is sachin tendulkar </div>
<div class="a"> Hi this is sachin tendulkar </div>
Run Code Online (Sandbox Code Playgroud)
然后点击按钮,我调用一个函数检查()
var divs = $(".a");
alert(divs.length); // Shows 2 here which is correct
if (divs.get(0) == divs.get(1)) alert("Same");
Run Code Online (Sandbox Code Playgroud)
但这不起作用.两个div中的一切都是一样的.除此之外,我们如何比较两个HTML元素是否完全一致.包括他们的innerHTML,className,Id及其属性.
这可行吗?
实际上,我有两个HTML文档,我想从它们中删除相同的内容所以两个元素可以具有相同的ID.
PS:在Crowder的宝贵意见后更新.如果我们将两个元素作为字符串进行比较,我们就不会得到匹配,因为它们的属性顺序可能会有所不同所以唯一的选择是迭代每个子属性并匹配.我仍然需要弄清楚完全有效的实施策略.
我正在使用var win1 = open.window(...); var win2 = open.window(...);在Firefox中打开2个选项卡/窗口 - 现在我想比较两个DOM(文档对象模型)的相似性.所以我有两个包含非常相似页面的DOM.页面具有相同的HTML但执行不同的JavaScript文件.
一般来说,我检查HTML和CSS是否相同:
var html1 = win1.document.body.innerHTML;
var html2 = win2.document.body.innerHTML;
if (html1 == html2) { ... }
var css1 = win1.document.body.style.cssText
var css2 = win2.document.body.style.cssText
if (css1 == css2) { ... }
Run Code Online (Sandbox Code Playgroud)
但是比较所有DOM节点似乎给出了不好的结果:
var bodyNodes1 = win1.document.body.getElementsByTagName('*');
var bodyNodes2 = win2.document.body.getElementsByTagName('*');
Run Code Online (Sandbox Code Playgroud)
bodyNodes1[123].innerHTML 不是必要的类似 bodyNodes2[123].innerHTML
哪些方法可用于比较DOM节点?是否存在用于测试页面相似性的框架/库/脚本?
我非常感谢任何提示.:-)
在检查完此答案后,是否有办法检查两个DOM元素是否相等?我正在尝试使用来检查javascript中两个元素是否相等===。出人意料的是,当元素A和B是相同的A === B回报false,而B.isEqualNode(A)回报true。
这是一个例子:
的HTML:
<div>
<h1>Test</h1>
</div>
Run Code Online (Sandbox Code Playgroud)
JavaScript:
var inMemoryDiv = document.createElement('div');
var inMemoryH1 = document.createElement('h1');
inMemoryH1.innerHTML = "Test";
inMemoryDiv.appendChild(inMemoryH1);
var h1 = document.getElementsByTagName('h1')[0];
alert(h1 === inMemoryH1); // false
alert(inMemoryH1.isEqualNode(h1)); // true
alert(h1.innerHTML === inMemoryH1.innerHTML); // true
Run Code Online (Sandbox Code Playgroud)
在小提琴中复制。
为什么会这样呢?