1

我在下面有一个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'); 

(它实际上不起作用)。

先感谢您!

4

2 回答 2

2

使用循环。

var dice = document.querySelectorAll('.dice#one .d_dot');
[0, 2, 3, 5, 6, 8].forEach(index => dice[index].classList.remove('invisible'));
于 2020-04-13T21:47:21.200 回答
1

.querySelectorAll()返回元素的节点列表(集合)。节点列表没有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'); 
  }
});
于 2020-04-13T21:47:37.067 回答