javascript - 如何使用 Javascript 将多个选中的复选框值添加到数组中?
问题描述
我有一个使用 *ngFor 循环从另一个数组中获取数据的输入元素。在选择多个复选框时,我需要将它们的值推送到我的空数组“selectedArr”中。在下面的代码中找到:
import { Component } from "@angular/core";
@Component({
selector: "app-root",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent {
title = "CodeSandbox";
toDo = ["Test", "Eat", "Sleep"];
task: string;
addTask(task: string) {
this.toDo.push(task);
}
selectedArr = [];
deleteValue() {}
addSelected(i) {
let checkId = document.getElementsByClassName("i");
console.log(checkId);
if (checkId.checked === true) {
this.selectedArr.push(i);
}
console.log(this.selectedArr);
}
}
<div>
<div class="form-group">
<label>Add a Task: </label>
<input class="form-control" type="text" [(ngModel)]="task" />
</div>
<button (click)="addTask(task)">Add</button>
<br />
<br />
<div>
My To Do List:
<ul>
<li *ngFor="let todo of toDo, index as i">
<input class="i" type="checkbox" (click)="addSelected(i)" />
{{todo}}
</li>
</ul>
</div>
<div class="btn class">
<button class="btn btn-primary" (click)="deleteValue()">Delete</button>
</div>
</div>
解决方案
试试这样:
.html
<li *ngFor="let todo of toDo, index as i">
<input class="i" type="checkbox" [(ngModel)]="checked[i]" (ngModelChange)="addSelected(todo,$event)" />
{{todo}}
</li>
.ts
checked = []
selectedArr = [];
addSelected(item,evt) {
if (evt) {
this.selectedArr.push(item);
}else {
let i = this.selectedArr.indexOf(item)
this.selectedArr.splice(i,1)
}
}
推荐阅读
- php - Symfony:设置时模板中不提供 Cookie
- node.js - 如何在 Puppeteer 中使用导出的字符串作为我的元素
- cmd - 我想在 Windows 中自动全屏显示命令提示符
- three.js - 如何使用非平面形状(表面)的threejs绘制具有3d点(x,y,z)的形状几何
- node.js - 在节点 js Firestore 事务中读取多个文档
- javascript - 处理来自异步调用的数据
- qt - yocto-krogoth 中的 falkon 编译中的 cmake 错误
- c# - MongoDB 中的运算符使用官方 .NET 驱动程序执行多过滤器查询
- python - 无法连接到 pymssql
- linux - 如果充电器 = 未插电,请提醒我。命令行脚本