我正在尝试模仿电子表格功能,我可以通过按shift
+ mouseover
来选择多个表格单元格,而我在选择附近的单元格时遇到了一些麻烦和选择的结束范围。例如,对于3x3网格,单元格0,0
是起始单元格,当我将鼠标移到0,1
时,1,1
1,0
也应该被选中,因为它属于范围。这是我到目前为止的逻辑,但它只在鼠标经过时选择了单元格(非相邻单元格被选中)。
这是我的代码:
selectCell (row, col) {
this.coors.push({x: row, y: col})
let len = this.coors.length - 1
this.start = {x: this.coors[0].x, y: this.coors[0].y}
this.end = {x: this.coors[len].x, y: this.coors[len].y}
this.grid[row].splice(col, 1, 2)
this.iterateOverGrid(2)
},
iterateOverGrid (col) {
for (let i = this.start.x; i <= this.end.x; i++) {
this.grid[i].splice(this.end.y, 1, col)
for (let j = this.start.y; j <= this.end.y; j++) {
this.grid[i].splice(this.end.y, 1, col)
}
}
},
start
保存所选第一个单元格的x和y位置; end
保存所选最后一个单元格的x和y位置。我的想法是迭代网格中的每一行和一行(我试图在iterateOverGrid()
方法中执行),然后为2
的每个单元格分配值start
} end
参数。我怎样才能做到这一点?