在javascript中选择一行后,如何取消选择其他行?
我有一个包含用户信息的表。 我想选择一行(一个对象)并显示选择图标,选择一行后,我想取消选择另一行(上一个选定行) 但是,在我的代码中,如果不再次选择行,则会累积选择行 我创建的代码:在javascript中选择一行后,如何取消选择其他行?,javascript,select,row,Javascript,Select,Row,我有一个包含用户信息的表。 我想选择一行(一个对象)并显示选择图标,选择一行后,我想取消选择另一行(上一个选定行) 但是,在我的代码中,如果不再次选择行,则会累积选择行 我创建的代码: this.selectRow = function (row) { if (this.isClickable()) { $scope.properties.selectedRow = row; } if (row.selected === undefined) row.selecte
this.selectRow = function (row) {
if (this.isClickable()) {
$scope.properties.selectedRow = row;
}
if (row.selected === undefined)
row.selected = false;
row.selected = !row.selected;
};
this.isSelected = function(row) {
return angular.equals(row, $scope.properties.selectedRow) ;
};
HTML表格为:
<tbody ng-if="ctrl.isArray(properties.content) && ctrl.isArray(properties.columnsKey)">
<tr ng-repeat="row in properties.content" ng-click="ctrl.selectRow(row)" ng-class="{'info': ctrl.isSelected(row)}">
<td> <span class="glyphicon glyphicon-ok" ng-show="row.selected"></span></td>
<td ng-if="!properties.allowHTML" ng-repeat="column in properties.columnsKey track by $index">
{{ $eval(column, row) | uiTranslate }}
</td>
<td ng-if="properties.allowHTML" ng-repeat="column in properties.columnsKey track by $index">
<div ng-if="properties.allowHTML" ng-bind-html="$eval(column, row) | uiTranslate"></div>
</td>
</tr>
</tbody>
{{$eval(列、行){uiTranslate}
它似乎工作正常,我可以选择和取消选择行和图标显示隐藏正确。
但是,我需要取消选择之前已选择的行
选定的行对象是:
{
“用户名”:“user1”,
“用户ID”:“23”,“选定”:真 } { “用户名”:“user1”, “用户ID”:“23”,
“选定”:false } 任何帮助都将不胜感激
谢谢。我正在重置上一行。我正在将其属性设置为false
this.selectRow=函数(行){
//如果已选择行,请取消选择该行。
如果(选定行){
row.selected=false;
}否则{
//查找以前选择的行。
const isRowSelected=$scope.properties.content.filter((项)=>item.selected==true);
如果(isRowSelected.length>0){
//如果成功找到行,则将该行标记为取消选择
$scope.properties.content.filter((项)=>item.selected==true)[0]。selected=false;
}
//将新行标记为选中
row.selected=true;
}
if(this.isClickable()){
$scope.properties.selectedRow=行;
}
如果(选定行===未定义){
row.selected=false;
}
};
this.isSelected=函数(行){
返回angular.equals(行$scope.properties.selectedRow);
};代码>如果您的行有一个类,您可以在选择您单击的行之前取消选择所有行。谢谢您的回答。但是,我无法获得正确的函数。我在vendor.min.js:105 TypeError:无法在vendor.min.js:203在f(vendor.min.js:220)在m.$eval(vendor.min.js:129)在m.$apply(vendor.min.js:129)在HTMLTableRowElement中设置未定义的属性'selected'。(vendor.min.js:220)在HTMLTableRowElement.c(vendor.min.js:35)你有什么想法吗?你能不能创建angular js fiddle,我很容易理解你的问题。对于给你带来的不便,我深表歉意,我已经更新了代码。如果有一行的选定值为true,则我会将该行的选定值重置为false。在看不到错误的情况下修复它是非常困难的。如果当前的实现没有解决问题,请创建一个显示问题的基本工作演示。非常感谢。我正在尝试创建一个js小提琴。我将尽可能地进行测试和更新。谢谢,不用担心,请仔细检查,如果它解决了您的问题,请告诉我。如果没有,请做一个JSFIDLE。谢谢