我是 javascript 新手,需要一些帮助。
我正在开发
Add/Remove
功能,用于在输入时从表中添加和删除数据。 Add 操作工作正常,但我无法 delete
表中的行。
我已经浏览了一些文档和链接,但我没有得到。 有人可以帮我吗?
代码片段:
<!DOCTYPE html>
<html>
<head lang="en">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<style>
body {
margin: 85px;
}
.btn-primary {
cursor: pointer;
}
</style>
</head>
<body>
<form class="container">
<div class="form-group">
<label for="name">Enter Name</label>
<input type="text" class="form-control" id="firstname" placeholder="Enter Your Name">
</div>
<div class="form-group">
<label for="age">Enter Age</label>
<input type="text" class="form-control" id="age" placeholder="Age">
</div>
<div class="form-group">
<label for="subject">Enter Subject</label>
<input type="text" class="form-control" id="stusubject" placeholder="Subject">
</div>
<input type="button" onclick="showName()" class="btn btn-primary" value="submit">
</form>
<table class="table container mt-5" id="studList">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Age</th>
<th scope="col">Subject</th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
<tr>
</tr>
</tbody>
</table>
</body>
</html>
<script>
var student = [{
nname: "abc",
age: 18,
subject: "eng"
},
{
nname: "red",
age: 20,
subject: "math"
}
]
function showName() {
var firstName = document.getElementById("firstname").value;
var age = document.getElementById("age").value;
var stusubject = document.getElementById("stusubject").value;
console.log("firstName :", firstName);
console.log("Age :", age);
console.log("subject :", stusubject);
// push the data in array
var newstud = {
nname: firstName,
age: age,
subject: stusubject,
}
student.push(newstud);
//console.log(newstud);
console.log(student);
var table = ' <tr>' +
'<td>' + firstName + '</td>' +
'<td>' + age + '</td>' +
'<td>' + stusubject + '</td>' +
'<td> <input type="button" onclick="delName(r)" class="btn btn-primary" value="Delete"></td></td>' +
'</tr>'
$(table).appendTo('#studList tbody');
console.log("table :", table);
}
//delete the row onclcik
function delName(r) {
var i = r.parentNode.parentNode.rowIndex;
document.getElementById("studList").deleteRow(i);
}
var table = ' <tr>' +
'<td>' + firstName + '</td>' -
+'<td>' + age + '</td>' +
'<td>' + stusubject + '</td>' +
'</tr>'
$(table).deleteRow('#studList tbody');
console.log("table :", table);
</script>
请替换您的以下代码:
年长者:
<td> <input type="button" onclick="delName(r)" class="btn btn-primary" value="Delete"></td></td>
新增:在代码中添加一个 rowId 变量,其初始值为 0,之后当添加新行时该值会递增。
<td> <input type="button" onclick="delName(deletebtn'+rowId+')" id="deletebtn'+rowId+'" class="btn btn-primary" value="Delete"></td></td>
如果还有什么请告诉我
我编辑了您的代码片段并更改了 delete 功能:
r
函数上的 delName()
,因为它是 未定义。但请改用 event.target
,它引用事件被分派到的对象。尝试运行代码片段打击:
function delName() {
var td = event.target.parentNode;
var tr = td.parentNode; // the row to be removed
tr.parentNode.removeChild(tr);
}
<!DOCTYPE html>
<html>
<head lang="en">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<style>
body {
margin: 85px;
}
.btn-primary {
cursor: pointer;
}
</style>
</head>
<body>
<form class="container">
<div class="form-group">
<label for="name">Enter Name</label>
<input type="text" class="form-control" id="firstname" placeholder="Enter Your Name">
</div>
<div class="form-group">
<label for="age">Enter Age</label>
<input type="text" class="form-control" id="age" placeholder="Age">
</div>
<div class="form-group">
<label for="subject">Enter Subject</label>
<input type="text" class="form-control" id="stusubject" placeholder="Subject">
</div>
<input type="button" onclick="showName()" class="btn btn-primary" value="submit">
</form>
<table class="table container mt-5" id="studList">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Age</th>
<th scope="col">Subject</th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
<tr>
</tr>
</tbody>
</table>
</body>
</html>
<script>
var student = [{
nname: "abc",
age: 18,
subject: "eng"
},
{
nname: "red",
age: 20,
subject: "math"
}
]
function showName() {
var firstName = document.getElementById("firstname").value;
var age = document.getElementById("age").value;
var stusubject = document.getElementById("stusubject").value;
console.log("firstName :", firstName);
console.log("Age :", age);
console.log("subject :", stusubject);
// push the data in array
var newstud = {
nname: firstName,
age: age,
subject: stusubject,
}
student.push(newstud);
//console.log(newstud);
console.log(student);
var table = ' <tr>' +
'<td>' + firstName + '</td>' +
'<td>' + age + '</td>' +
'<td>' + stusubject + '</td>' +
'<td> <input type="button" onclick="delName()" class="btn btn-primary" value="Delete"></td></td>' +
'</tr>'
$(table).appendTo('#studList tbody');
console.log("table :", table);
}
//delete the row onclick
function delName() {
var td = event.target.parentNode;
var tr = td.parentNode; // the row to be removed
tr.parentNode.removeChild(tr);
}
var table = ' <tr>' +
'<td>' + firstName + '</td>' -
+'<td>' + age + '</td>' +
'<td>' + stusubject + '</td>' +
'</tr>'
$(table).deleteRow('#studList tbody');
console.log("table :", table);
</script>
参考:表格行删除按钮
您必须删除 table 属性并在 CSS flex 中将 div 创建为表格,并使每行的类相同且 ID 不同,如下所示
<div id='rowUserDataMain' class='row'><div class='name'></div><div class='age'></div><div class='email'></div></div>
$('#rowUserDataMain').children().remove();
//就是这样!