这是代码,在console.log部分下面是我的问题。
它会在标签中注销所有3类偏移:
<tag id="id1" class="$offset1, $offset2, $offset3">
但我在这样的标签中只需要一类偏移量:
<tag id="id1" class="$offset1">
如何解决此问题?
解释
将新类添加到html元素
function $addClsls(element, ...newClass) {
return element.classList.add(...newClass);
}
从html元素中删除类
function $rmClsls(element, ...rmClass) {
return element.classList.remove(...rmClass);
}
选择元素ID或类
function $select(element) {
return document.querySelector(element);
}
从所选元素中添加或删除类的函数
function $switch(selectEle, eleClass, indexNum) {
switch (indexNum) {
case 0:
$addClsls(selectEle, eleClass);
break;
case 1:
$rmClsls(selectEle, eleClass);
break;
default:
}
}
将3个元素ID放入数组
let groupElements = [$select('#id-1'), $select('#id-2'), $select('#id-
3')];
将3个元素类放入数组中(无需放入。)
let groupOffsets = ['offset1', 'offset2', 'offset3'];
设置初始时间值
let addTime = 0;
检查是否为true以映射groupElements和groupOffsets 并设置延迟时间
if (true) {
groupElements.map( i => {
setTimeout( () => {
$switch(i, groupOffsets.map( x => x ), 0)
console.log(i) // <= logs out results
}, 0 + addTime );
addTime += 1000;
});
}
目标是这样注销的:
<tag id="id-1" class="offset1"> </tag>
<tag id="id-2" class="offset2"> </tag>
<tag id="id-3" class="offset3"> </tag>
但问题是这样的:
<tag id="id-1" class="offset1,offset2,offset3"></tag>
<tag id="id-2" class="offset1,offset2,offset3"></tag>
<tag id="id-3" class="offset1,offset2,offset3"></tag>
答案 0 :(得分:1)
好吧,我修好了。所以我要回答我自己的问题。 ;)
我尝试了另一种做地图功能的方法,我使用了一个二维数组 而不是2个分离的数组
let groupItems = [
[$select('#id-1'), 'offset1'],
[$select('#id-2'), 'offset2'],
[$select('#id-3'), 'offset3']
]
groupitems.map( items => {
setTimeout( () => {
// destruct first dimensional
let [ x ] = [items];
// destruct second dimensional
let [ i, j ] = x;
// first round i = $select('#id-1'); j = 'offset2';
// second and third round so forth
sectionSwitch( i, j, 1);
}, 0 + addTime);
addTime += 1000;
})