我的文档上有四个div,只要其中至少两个具有相同的文本内容,我就想执行一些代码。
我在寻找不包含手动比较每个divs文本内容与每个其他divs文本内容的解决方案时遇到了麻烦while(div1.textContent === div2.textContent || div1.textContent === div3.textContent || ....)
有一个简单的方法可以做到这一点吗?
-编辑HTML
<div class="container">
<h2>Answers</h2>
<div class="row">
<div class="col-md option" id="option1">
Answer
</div>
<div class="col-md option" id="option2">
Answer
</div>
<div class="col-md option" id="option3">
Answer
</div>
<div class="col-md option" id="option4">
Answer
</div>
</div>
</div>
最佳答案
将div保存到唯一集合中,然后创建其文本内容的Set
。如果Set
的大小小于集合的长度,则必须有匹配的内容。
test("foo");
test("bar");
function test(cls) {
var divs = document.querySelectorAll(`.${cls}`);
var set = new Set(Array.from(divs, el => el.textContent));
if (set.size < divs.length) {
console.log(`'${cls}' found matching content`);
} else {
console.log(`'${cls}' did not find matching content`);
}
}
.foo, .bar {
display: inline-block;
}
.foo {
color: blue;
}
.bar {
color: red;
}
<div class="foo">1</div>
<div class="foo">2</div>
<div class="foo">3</div>
<div class="foo">1</div>
<hr>
<div class="bar">1</div>
<div class="bar">2</div>
<div class="bar">3</div>
<div class="bar">4</div>
关于javascript - 比较两个以上值的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49222529/