Javascript 尝试比较不同元素的类
我正在寻找一种方法来检查一个元素中的类是否与另一个元素中的类匹配。我已尝试使用以下代码: 使用dataset似乎是可行的,但是,我希望探索通过纯Javascript实现这一点的可能性。有效的一行被注释掉(var matches=first.dataset.name==second.dataset.name;),而我难以使用的一行是(var matches=first.classList==second.classList;) javascript:Javascript 尝试比较不同元素的类,javascript,Javascript,我正在寻找一种方法来检查一个元素中的类是否与另一个元素中的类匹配。我已尝试使用以下代码: 使用dataset似乎是可行的,但是,我希望探索通过纯Javascript实现这一点的可能性。有效的一行被注释掉(var matches=first.dataset.name==second.dataset.name;),而我难以使用的一行是(var matches=first.classList==second.classList;) javascript: //check for 2 matching
//check for 2 matching squares
function checkIfMatches() {
//var matches = first.dataset.name === second.dataset.name;
var matches = first.classList === second.classList;
matches ? disable() : unflip();
}
html:
谢谢你的帮助。如果需要更多详细信息,您可以进行评论。使用数组排列[…classList]
将类列表
设置为数组
,然后使用数组.prototype.each()
检查是否每个成员都包含在另一个成员的类列表
中
函数sameClassList({classList:x},{classList:y}){
返回[…x]。每个(z=>y.contains(z))
&&[…y].every(z=>x.contains(z));
}
console.log(sameClassList(a,b));//真的
console.log(sameClassList(a,c));//假的
console.log(sameClassList(b,c));//错误
将注释考虑在内,这将独立于顺序进行解决。 稍微更改了示例,以便可以执行它
//检查两个匹配的方块
函数checkIfMatches(){
var elements=document.getElementsByClassName('卡片')
var first=elements[0]。getElementsByTagName('i')[0]
var second=elements[1]。getElementsByTagName('i')[0]
var matches=first.classList.length==second.classList.length
first.classList.forEach(条目=>matches=matches&&second.classList.contains(条目))
console.log(匹配项)
//匹配?禁用():取消滑动();
}
checkIfMatches()
类列表
是一个对象,它在两个元素之间并不相同,。你可以试试classList.value
。虽然一定要注意,如果您的类是class1 class2
&class2 class1
,那么它仍然是假的,而您可能希望它是真的。
<li class="card">
<i class="pa pa-test"></i>
</li>
<li class="card">
<i class="pa pa-test"></i>
</li>