如何优化 querySelectorAll 记录?

How to optimize a querySelectorAll record?

我下面有一个js代码。问题是 - 是否可以将这些行合并为一条?

if (n === 6) {
    document.querySelectorAll('.dice#one .d_dot')[0].classList.remove('invisible');
    document.querySelectorAll('.dice#one .d_dot')[2].classList.remove('invisible');
    document.querySelectorAll('.dice#one .d_dot')[3].classList.remove('invisible');
    document.querySelectorAll('.dice#one .d_dot')[5].classList.remove('invisible');
    document.querySelectorAll('.dice#one .d_dot')[6].classList.remove('invisible');
    document.querySelectorAll('.dice#one .d_dot')[8].classList.remove('invisible');
  }

例如像这样:

document.querySelectorAll('.dice#one .d_dot')[0, 2, 3, 5, 6, 8].classList.remove('invisible'); 

(实际上是行不通的)

提前致谢!

使用循环。

var dice = document.querySelectorAll('.dice#one .d_dot');
[0, 2, 3, 5, 6, 8].forEach(index => dice[index].classList.remove('invisible'));

.querySelectorAll() returns 元素的节点列表(集合)。节点列表没有 classList,其中的元素有,因此您必须对每个元素都这样做。但是,有一种更简单的方法,即循环遍历集合并对其中的每个元素进行操作:

let nums = [0, 2, 3, 5, 6, 8];
document.querySelectorAll('.dice#one .d_dot').forEach(function(item, index){
  if(nums.indexOf(index) > -1 ){
    item.classList.remove('invisible'); 
  }
});