如何逐步替换 classList 中的标记?
How to replace tokens in a classList incrementally?
我想找到一种方法,用更少的代码行将标记 'c1' 替换为 'c2',将 'c2' 替换为 'c3',等等。
目前,我正在使用 forEach 遍历每个元素,如下所示:
carsLeft.forEach(carLeft => moveCarLeft(carLeft))
然后为了将元素一 space 移到左侧,我输入了一个 switch 语句以将 class 重新分配给它:
switch(true) {
case carLeft.classList.contains('c1'):
carLeft.classList.replace('c1', 'c2')
break
case carLeft.classList.contains('c2'):
carLeft.classList.replace('c2', 'c3')
break
case carLeft.classList.contains('c3'):
carLeft.classList.replace('c3', 'c4')
break
}
我想知道是否有一种方法可以使用正则表达式将 switch 语句简化为如下所示:
carLeft.classList.replace(`c\d`, `c\d+`)
...或者除了使用正则表达式之外的另一种方式。感谢您抽出时间来阅读。任何帮助将不胜感激。
您可以使用 for
循环:
for (let i = 1; i <= 3; i++) {
if (carLeft.classList.contains("c"+i)) {
carLeft.classList.replace("c"+i, "c"+(i+1));
break;
}
}
我想找到一种方法,用更少的代码行将标记 'c1' 替换为 'c2',将 'c2' 替换为 'c3',等等。
目前,我正在使用 forEach 遍历每个元素,如下所示:
carsLeft.forEach(carLeft => moveCarLeft(carLeft))
然后为了将元素一 space 移到左侧,我输入了一个 switch 语句以将 class 重新分配给它:
switch(true) {
case carLeft.classList.contains('c1'):
carLeft.classList.replace('c1', 'c2')
break
case carLeft.classList.contains('c2'):
carLeft.classList.replace('c2', 'c3')
break
case carLeft.classList.contains('c3'):
carLeft.classList.replace('c3', 'c4')
break
}
我想知道是否有一种方法可以使用正则表达式将 switch 语句简化为如下所示:
carLeft.classList.replace(`c\d`, `c\d+`)
...或者除了使用正则表达式之外的另一种方式。感谢您抽出时间来阅读。任何帮助将不胜感激。
您可以使用 for
循环:
for (let i = 1; i <= 3; i++) {
if (carLeft.classList.contains("c"+i)) {
carLeft.classList.replace("c"+i, "c"+(i+1));
break;
}
}