for(let i = 0 ; i<this.$refs[`s${this.pList[this.findCurrent(str)].current}`][0].numberList.length; i++) { if(this.$refs[`s${this.pList[this.findCurrent(str)].current}`][0].numberList[i].isLock) { //清除前一个卡片下标状态 if (this.pList[this.findCurrent(str)].current !== 0) { for (let i = 0; i < this.$refs[`s${this.pList[this.findCurrent(str)].current - 1}`][0].numberList.length; i++) { if (str === this.$refs[`s${this.pList[this.findCurrent(str)].current - 1}`][0].numberList[i].num) { this.$refs[`s${this.pList[this.findCurrent(str)].current - 1}`][0].numberList[i].active = false; } } } this.pList[this.findCurrent(str)].current++ for(let i = 0 ;i<this.$refs[`s${this.pList[this.findCurrent(str)].current}`][0].numberList.length; i++) { if(this.$refs[`s${this.pList[this.findCurrent(str)].current}`][0].numberList[i].isLock) { //清除前一个卡片下标状态 if (this.pList[this.findCurrent(str)].current !== 0) { for (let i = 0; i < this.$refs[`s${this.pList[this.findCurrent(str)].current - 1}`][0].numberList.length; i++) { if (str === this.$refs[`s${this.pList[this.findCurrent(str)].current - 1}`][0].numberList[i].num) { this.$refs[`s${this.pList[this.findCurrent(str)].current - 1}`][0].numberList[i].active = false; } } } this.pList[this.findCurrent(str)].current++ } } break; } }
时间: 2024-02-27 20:53:04 浏览: 104
Vue 解决通过this.$refs来获取DOM或者组件报错问题
好的,我将这段代码改写成了函数递归的形式,代码如下:
```
function updateCurrent(str, currentIndex, pList) {
if (currentIndex >= pList.length) {
return;
}
for (let i = 0; i < this.$refs[`s${pList[currentIndex].current}`][0].numberList.length; i++) {
if (this.$refs[`s${pList[currentIndex].current}`][0].numberList[i].isLock) {
//清除前一个卡片下标状态
if (currentIndex !== 0) {
for (let i = 0; i < this.$refs[`s${pList[currentIndex - 1].current}`][0].numberList.length; i++) {
if (str === this.$refs[`s${pList[currentIndex - 1].current}`][0].numberList[i].num) {
this.$refs[`s${pList[currentIndex - 1].current}`][0].numberList[i].active = false;
}
}
}
pList[currentIndex].current++;
updateCurrent(str, currentIndex + 1, pList);
break;
}
}
}
// 调用
updateCurrent(str, this.findCurrent(str), this.pList);
```
注意,为了使递归函数更加通用,我将该代码中的 `this.pList` 改为传参的 `pList`,使用时需要相应地修改函数调用处的代码。
阅读全文