在HTML文档中引进JavaScript脚本,实现动态生成添加修改删除表格案例。以面向对象编程思想,实现以上实现的功能。将逻辑代码改写成类进行封装,以实现复用。
时间: 2024-03-14 10:47:55 浏览: 65
好的,这是一个很不错的问题!首先,我们需要在HTML文档中引入一个JavaScript脚本,来实现动态生成添加修改删除表格的功能。以下是一个简单的HTML文档:
```html
<!DOCTYPE html>
<html>
<head>
<title>动态表格</title>
</head>
<body>
<table id="myTable">
<thead>
<tr>
<th>姓名</th>
<th>学科</th>
<th>成绩</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td>
<td>数学</td>
<td>90</td>
<td>
<button onclick="editRow(this)">编辑</button>
<button onclick="deleteRow(this)">删除</button>
</td>
</tr>
<tr>
<td>李四</td>
<td>语文</td>
<td>80</td>
<td>
<button onclick="editRow(this)">编辑</button>
<button onclick="deleteRow(this)">删除</button>
</td>
</tr>
<tr>
<td>王五</td>
<td>英语</td>
<td>70</td>
<td>
<button onclick="editRow(this)">编辑</button>
<button onclick="deleteRow(this)">删除</button>
</td>
</tr>
</tbody>
</table>
<br />
<button onclick="addRow()">添加</button>
<script src="table.js"></script>
</body>
</html>
```
在这个HTML文档中,我们引入了一个JavaScript脚本“table.js”,它包含了我们所需要的逻辑代码。
接下来,让我们来看一下如何使用面向对象编程思想,将逻辑代码改写成类进行封装,以实现复用。
首先,我们可以定义一个名为“Table”的类,它包含以下方法:
1. 构造函数:用于初始化表格,并将表格中的数据存储在一个数组中。
2. 生成表格方法:用于根据数组中的数据生成表格。
3. 添加行方法:用于添加一行数据到表格中,并更新数组。
4. 编辑行方法:用于编辑表格中某一行的数据,并更新数组。
5. 删除行方法:用于删除表格中某一行的数据,并更新数组。
以下是一个简单的“Table”类的实现:
```javascript
class Table {
constructor(tableId) {
this.table = document.getElementById(tableId);
this.data = [];
for (let i = 1; i < this.table.rows.length; i++) {
let row = this.table.rows[i];
let obj = {
name: row.cells[0].innerHTML,
subject: row.cells[1].innerHTML,
score: row.cells[2].innerHTML
};
this.data.push(obj);
}
this.generateTable();
}
generateTable() {
let tbody = this.table.getElementsByTagName("tbody")[0];
tbody.innerHTML = "";
for (let i = 0; i < this.data.length; i++) {
let row = tbody.insertRow(i);
let cell1 = row.insertCell(0);
let cell2 = row.insertCell(1);
let cell3 = row.insertCell(2);
let cell4 = row.insertCell(3);
cell1.innerHTML = this.data[i].name;
cell2.innerHTML = this.data[i].subject;
cell3.innerHTML = this.data[i].score;
cell4.innerHTML = `
<button onclick="table.editRow(this)">编辑</button>
<button onclick="table.deleteRow(this)">删除</button>
`;
}
}
addRow() {
let name = prompt("请输入姓名:");
let subject = prompt("请输入学科:");
let score = prompt("请输入成绩:");
let obj = {
name: name,
subject: subject,
score: score
};
this.data.push(obj);
this.generateTable();
}
editRow(button) {
let row = button.parentNode.parentNode;
let index = row.rowIndex - 1;
let name = prompt("请输入姓名:", this.data[index].name);
let subject = prompt("请输入学科:", this.data[index].subject);
let score = prompt("请输入成绩:", this.data[index].score);
let obj = {
name: name,
subject: subject,
score: score
};
this.data[index] = obj;
this.generateTable();
}
deleteRow(button) {
let row = button.parentNode.parentNode;
let index = row.rowIndex - 1;
this.data.splice(index, 1);
this.generateTable();
}
}
let table = new Table("myTable");
```
在这个“Table”类中,我们定义了一个构造函数,用于初始化表格并将其中的数据存储在一个数组中。我们还定义了一个“generateTable”方法,用于根据数组中的数据生成表格。这个方法会将表格中原来的数据清空,然后根据数组中的数据生成新的表格。
我们还定义了“addRow”、“editRow”和“deleteRow”三个方法,分别用于添加、编辑和删除表格中的数据,并更新数组。这些方法会调用“generateTable”方法来重新生成表格。
最后,我们创建了一个“Table”实例,并将其绑定到了全局变量“table”上,这样就可以在HTML文档中使用“table.addRow()”、“table.editRow()”和“table.deleteRow()”来操作表格了。
以上就是使用面向对象编程思想,将逻辑代码改写成类进行封装的一个简单示例。当然,在实际开发中,我们可能还需要对“Table”类进行一些优化和扩展,以满足实际需求。
阅读全文
相关推荐













