繁星點點滴滴
2022-06-09 16:59:29
所以,我有一個數獨生成器,當通過 API 訪問時,它會生成一個數獨板(JSON 數組),然后在表格中使用 AngularJS 和 ng-repeat 我在頁面上顯示數獨板。到目前為止,這就是我所擁有的。我想要實現的是突出顯示框中的所有元素以及行和列?,F在行和列被突出顯示,但是我怎樣才能突出顯示下圖中用黃色標記的元素,因為這些元素屬于框:這是我的 HTML 代碼:<body ng-app="Sudoku"><!-- SUDOKU BOARD --><div class="sudoku-game" ng-controller="SudokuController"> <table class="sudoku-board" ng-init="getSudoku()"> <tbody> <tr ng-repeat="sudoku in sudokuGrid track by $index" ng-init="row = $index" class="sudoku-row" ng-class="{'highlight':rowSelected === row}"> <td ng-repeat="number in sudoku track by $index" ng-init="col = $index" class="sudoku-col" ng-class="{'highlight':colSelected === col}"> <div class="sudoku-cell" ng-class="{'selected':isSelected === ((row*10) + col)}" ng-click="selectedCell(row, col)" ng-keyup="insertNum($event)" tabindex="1"> <span class="prevalued" ng-if="number !== null" ng-bind="number"></span> <span class="emptycell" ng-if="number === null" ng-bind="emptyCell"></span> </div> </td> </tr> </tbody> </table></div>這是我在 JavaScript 中為 selectedCell(row, col) 函數編寫的代碼$scope.getCellPosition = function (row, col) { return (row * 10) + col;}$scope.selectedCell = function (row, col) { $scope.isSelected = $scope.getCellPosition(row, col); $scope.rowSelected = row; $scope.colSelected = col; console.log($scope.isSelected);}
1 回答

慕村9548890
TA貢獻1884條經驗 獲得超4個贊
您可以在所選單元格的正方形中向單元格添加一個突出顯示類:
<div class="sudoku-cell" ng-class="{
'selected':isSelected === ((row*10) + col),
'highlight': isHighlight(row, col),
}" ng-click="selectedCell(row, col)" ng-keyup="insertNum($event)" tabindex="1">
在你的 js 中:
$scope.isHighlight = function (row, col) {
// Add debugging functions
//
console.log({
row,
rowSelected: $scope.rowSelected,
col,
colSelected: $scope.colSelected,
});
// Return the boolean
//
return Math.floor(row / 3) === Math.floor($scope.rowSelected / 3)
&& Math.floor(col / 3) === Math.floor($scope.colSelected / 3)
}
添加回答
舉報
0/150
提交
取消